2013-05-13 76 views
0

我试图让一个错误框弹出时,在文本框内的字母,但它不工作,我不知道我需要做什么。PHP验证整数不起作用

下面是部分

<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> 

我是新来这个网站,所以我不知道怎么在这里发布的所有代码,因此我上传一切引擎收录的代码。

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

在此先感谢

+1

什么是钻石? – Deepak 2013-05-13 07:51:18

+1

这是一个不是php的问题 – Orangepill 2013-05-13 07:58:37

+0

在浏览器中检查控制台(通常可以用F12打开,可能需要在FireFox中安装Firebug)。看看是否有一些错误。 – 2013-05-13 07:59:20

回答

0

假设你应该修改你的validateinger功能。 首先,看看parseInt规范。你应该记住,即使参数不完全是数字,它也会返回一个数字。例如: parseInt("12px")将返回12。正因为如此,你应该isNaN更好的只是测试值(将情况返回true,如果值是“12像素”):

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