使用 jquery 和 php 测试表单输入是 1 位还是 2 位整数

Posted

技术标签:

【中文标题】使用 jquery 和 php 测试表单输入是 1 位还是 2 位整数【英文标题】:test if a form input is a 1 or 2 digit integer with jquery and php 【发布时间】:2011-07-27 14:46:50 【问题描述】:

我有一个表单,其中有五个字段都设置为 maxlength="2"。

基本上,我希望可以输入的唯一值是一位或两位整数,因为在将值存储到数据库之前对这些字段执行计算。

是否有任何 jquery 甚至不允许用户输入不是整数的值?

另外,用 jquery 和 php 验证这一点的最佳方法是什么?我找到了一些方法,但我需要确保它的安全,避免使用字符、-2、.1 等


已解决

对于我使用的php部分

if(!ctype_digit($_POST['value']))

只允许正整数

对于 javascript

 $('.inputQuantity').keyup(function() 
    this.value = this.value.replace(/[^0-9\.]/g,'');
);

删除输入字段中的非数字条目。

以上两种方法都有效,尽管我认为有些人更喜欢使用 focusout(function() 而不是 keyup(function() ;)

【问题讨论】:

我发现他们用 php 做到这一点的最好方法是 ctype_digit。下面的一些答案允许 .3 或 -3 等。 【参考方案1】:

在 PHP 中测试一个字符串是否只包含一个数字或两个数字,可以使用正则表达式来完成:

// $string is supposed to contain your data -- maybe obtained from $_POST['field_name']
if (preg_match('/^\d1,2$/', $string)) 
    // it's one or two digits

基本上,这会测试:

字符串开头:^ 一个数字:\d 一两次:\d1,2 字符串结尾:$

而且,在 Javascript 中,我想你可以使用相同的正则表达式:

// str is supposed to contain your data
if (/^\d1,2$/.test(str)) 
    // it's one or two digits

【讨论】:

【参考方案2】:
$("input[maxlength=2]").change(function()
   var val = $(this).val();
   $(this).val(parseInt(val));
);

没有测试过。

【讨论】:

【参考方案3】:

确保这一点的一种理论上的新奇方法是:

<input type="number" name="number1" maxsize="2" >

但是对于旧版浏览器,您仍然需要 Javascript:

<input name="num2" onchange="this.value = this.value.replace(/\D/, '')">

无论如何都无法避免在服务器端检查它。

【讨论】:

【参考方案4】:

我专门为你创建了一个基于 PHP 的函数 --

<form action="" method="POST">
       <input type="textbox" name="number" />
       <input type="submit" value="Check" />
</form>
<?php

  $i = $_POST['number'];

  function check_number_digits($i)
  
      $func = preg_replace('/[^0-9]/', '', $i);
      if($_POST)
      
          if(!$func)
          
              echo 'You entered no Number!';
          
          else
          
              return strlen($func);
          
      
      else
      
          //Can do anything!
      
  

  echo  check_number_digits($i);

?>

我已经测试过了,效果很好!告诉我它是否有帮助。

希望成功!

【讨论】:

【参考方案5】:

已解决

对于我使用的php部分

if(!ctype_digit($_POST['value']))

只允许正整数

对于 javascript

 $('.inputQuantity').keyup(function() 
    this.value = this.value.replace(/[^0-9\.]/g,'');
);

删除输入字段中的非数字条目。

以上两种方法都有效,尽管我认为有些人更喜欢使用 focusout(function() 而不是 keyup(function() ;)

【讨论】:

以上是关于使用 jquery 和 php 测试表单输入是 1 位还是 2 位整数的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery 添加表单字段和 PHP Sessions 来记住添加的字段

使用 JQuery、Ajax、PHP、Json 进行表单验证

Jquery -> php -> mysql 和动态表单字段

Php / Jquery 表单和数据表

angularjs表单提交 怎么接受数据

如何使用 JQuery 和 formData 正确获取表单数据