【问题标题】:PHP validate integer is not functioningPHP验证整数不起作用
【发布时间】:2016-02-08 14:09:05
【问题描述】:

当文本框内有字母时,我试图弹出一个错误框,但是它不起作用,我不确定我需要做什么。

这是该部分的代码

  <tr>
    <td align="right">&nbsp;&nbsp;Weight:</td>
    <td><input type="text" name="weight"  value="<?php echo $weight?>" onblur="validateinteger(Diamonds.weight,'weight')" <?php if($formmode==1) echo 'disabled';?> size="15" /></td>
 </tr>

我是这个网站的新手,所以我不知道如何在此处发布所有代码,因此我将所有内容都上传到了 pastebin。

完整代码请点击。 http://pastebin.com/ZfUe6GWq

提前致谢

【问题讨论】:

  • 这是一个 javascript 问题而不是 php 问题
  • 在浏览器中检查控制台(通常可以用F12打开,可能需要在FireFox中安装Firebug)。看看有没有错误。
  • 什么不起作用?你得到了什么?
  • @nl-x 什么都没有,它只是让字母坐在那里而不显示任何错误消息

标签: javascript


【解决方案1】:

假设您应该修改 validateinger 函数。 首先,看一下parseInt 规范。您应该记住,即使参数不完全是数字,它也会返回一个数字。例如: parseInt("12px") 将返回 12。因此,您最好使用isNaN 简单地测试值(如果值为“12px”,它将返回 true):

function validateinteger(whichcontrol, controlname){
   if(whichcontrol.value.length==0)
     return true;
   else if(isNaN(whichcontrol.value))
     alert(controlname + " must be a number!"); 
   else
     return true;
  }

但上面的代码只会检查字符串是否为数字,而不是整数(如函数名所说)。 要检查值是否完全是整数,您可以执行下一步(使用正则表达式):

function validateinteger(whichcontrol, controlname){
   if(whichcontrol.value.length==0)
     return true;
   else if(!(/^[\d]+$/.test(whichcontrol.value)​))
     alert(controlname + " must be a number!"); 
   else
     return true;
}

(基于this的回答)

注意:

你可以用onblur="validateinteger(this,'weight')"代替onblur="validateinteger(Diamonds.weight,'weight')"。其中this 指向事件发生的元素。

【讨论】:

    猜你喜欢
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    相关资源
    最近更新 更多