0

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

这是该部分的代码

  <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

提前致谢

4

1 回答 1

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

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

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

(基于这个 答案)

笔记:

而不是onblur="validateinteger(Diamonds.weight,'weight')"你可能会这样做onblur="validateinteger(this,'weight')"。Wherethis指向事件发生的元素。

于 2013-05-13T08:12:58.623 回答