放入异常后html表单不起作用

时间:2012-11-25 07:08:43

标签: php javascript html exception

我使用JS创建了异常,因此只允许用户在html表单字段中输入数字。这很好用,但问题是,提交按钮不再起作用了。如果我删除异常代码,提交按钮工作得很好!我无法理解问题出在哪里。有人可以帮忙吗?提前谢谢!

这是例外:

function validateNum(evt) {
  var theEvent = evt || window.event;
  var key = theEvent.keyCode || theEvent.which;
  key = String.fromCharCode( key );
  var regex = /[0-9]|\./;
  if( !regex.test(key) ) {
    theEvent.returnValue = false;
    if(theEvent.preventDefault) theEvent.preventDefault();
  }
}


function validate()
{

 if( document.myForm.ic.value == "" ||
           isNaN( document.myForm.ic.value ) ||
           document.myForm.ic.value.length != 12)
   {
     alert( "Please provide your correct IC Number!" );
     document.myForm.ic.focus() ;
     return false;
   }else{
     // Put extra check for data format
     var ret = validateNum();
     if( ret == false )
     {
          return false;
     }
   }

这是我的html表单操作:

<form name="myForm" method="post" action="nonuum_reg.php" onsubmit="return(validate());">

这里是输入字段&amp;提交按钮:

 <input name="ic" type="text" id="ic" maxlength="12" size="45" onkeypress='validateNum(event)'/>

<input type="submit" value="Apply" />

2 个答案:

答案 0 :(得分:4)

尝试使用此作为我对您的问题评论的解释:

<form name="myForm" method="post" action="nonuum_reg.php" onsubmit="validate(event);">
    <input name="ic" type="text" id="ic" maxlength="12" size="45" onkeypress='validateNum(event)'/>
    <input type="submit" value="Apply" />
</form>
<script>
    function validateNum(evt) {
        var theEvent = evt;
        var key = theEvent.keyCode || theEvent.which;
        key = String.fromCharCode( key );
        var regex = /[0-9]|\./;

        if( !regex.test(key) ) {
            theEvent.returnValue = false;
            if(theEvent.preventDefault) theEvent.preventDefault();
        }
    }

    function validate(evt){
        if( document.myForm.ic.value == "" || isNaN( document.myForm.ic.value ) || document.myForm.ic.value.length != 12) {
            evt.preventDefault();

            alert( "Please provide your correct IC Number!" );
            document.myForm.ic.focus() ;
            return false;
        } 
    }
</script>

您仍应在PHP控制器上创建验证,以防止用户在其浏览器上关闭javascript。

答案 1 :(得分:1)

尝试在you = r else close

中添加一个返回true
...

else{
     // Put extra check for data format
     var ret = validateNum();
     if( ret == false )
     {
          return false;
     }

   return true;
}

...

这也应该对您有帮助(不是同一个问题,但代码相同)link