PHP验证整数不起作用

时间:2013-05-13 07:48:53

标签: javascript

我正在尝试在文本框内部的字母时弹出一个错误框,但它不起作用,我不确定我需要做什么。

以下是

部分的代码
  <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

提前致谢

1 个答案:

答案 0 :(得分:0)

假设您应该修改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;
  }

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

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(Diamonds.weight,'weight')"您可以onblur="validateinteger(this,'weight')"this指向事件发生的元素的位置。