Codeigniter 表单验证允许数字类型包含逗号

发布于 2024-12-10 02:33:59 字数 195 浏览 0 评论 0原文

当使用 CI 验证价格时,我使用以下规则;

$this->form_validation->set_rules('price','lang:price','required|numeric|greater_than[0.99]');

有什么办法允许在此规则行中使用逗号吗?或者我必须创建一个回调?

When validating prices with CI I use the following rule;

$this->form_validation->set_rules('price','lang:price','required|numeric|greater_than[0.99]');

Is there any way to allow commas in this rule line? Or do i have to create a callback?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

陪你到最终 2024-12-17 02:33:59

Codeigniter 3 提供了正则表达式验证。 表单验证

使用 Ben 给出的正则表达式... 否需要回调。

$this->form_validation->set_rules('price','lang:price','required|numeric|greater_than[0.99]|regex_match[/^[0-9,]+$/]');

Codeigniter 3 offers a regex validation. Form Validation

Using the regex given by Ben... No callback is required.

$this->form_validation->set_rules('price','lang:price','required|numeric|greater_than[0.99]|regex_match[/^[0-9,]+$/]');
醉城メ夜风 2024-12-17 02:33:59

通过使用表单验证库,我从未见过任何可以让您在没有回调的情况下做到这一点的东西。

但这将是回调:

function numeric_wcomma ($str)
{
    return preg_match('/^[0-9,]+$/', $str);
}

规则为

$this->form_validation->set_rules('input', 'Input', 'callback_numeric_wcomma');

From using the form validation library, I've never seen anything that would allow you to do that without a callback.

This would be the callback though:

function numeric_wcomma ($str)
{
    return preg_match('/^[0-9,]+$/', $str);
}

with a rule of

$this->form_validation->set_rules('input', 'Input', 'callback_numeric_wcomma');
冬天的雪花 2024-12-17 02:33:59

我的答案是:

$this->form_validation->set_rules('price','lang:price','regex_match[/^(?!0*[.,]?0+$)\d*[.,]?\d+$/m]');

或者在您的 codeigniter 视图中执行此操作。添加脚本:

<script>
function replace(element) {
  // set temp value
  var tmp = element.value;
  // replace everything that's not a number or comma or decimal
  tmp = tmp.replace(/[^0-9,.,-]/g, "");
  // replace commas with decimal
  tmp = tmp.replace(/,/, ".");
  // set element value to new value
  element.value = tmp;
}
</script>

然后使用如下输入:

<input id="something" onkeyup="replace(this)" type="text">

My answer is:

$this->form_validation->set_rules('price','lang:price','regex_match[/^(?!0*[.,]?0+$)\d*[.,]?\d+$/m]');

or do it in your codeigniter view. Add script:

<script>
function replace(element) {
  // set temp value
  var tmp = element.value;
  // replace everything that's not a number or comma or decimal
  tmp = tmp.replace(/[^0-9,.,-]/g, "");
  // replace commas with decimal
  tmp = tmp.replace(/,/, ".");
  // set element value to new value
  element.value = tmp;
}
</script>

and then use input like this:

<input id="something" onkeyup="replace(this)" type="text">
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文