javascript
  • forms
  • javascript-events
  • 2012-07-11 30 views 0 likes 
    0

    我有一个表格,我做的JavaScript验证功能的onsubmit:的Javascript验证表单没有阻止提交

     <form method="post" onsubmit="return validateForm(this.id)" action="<?php echo $PHP_SELF; ?>" enctype="multipart/form-data" id='addjournalinfoform' style='border:0px;width:90%' class="formular" > 
    
          <fieldset> 
           <legend> 
           Journal 
           </legend> 
           <label> 
            <span>* ISSN:</span><br /> 
            <input type='text' onfocusout="validateField('issn')" class='text-input' value="" name="issn" id="issn" style='width:30%'> 
           </label> 
          </fieldset> 
    
         </form> 
    

    ,这是功能:

    function validateForm(form) 
    { 
        if(form=="addjournalinfoform") 
        { 
         alert('onSubmit'); 
         if($('#issn').val()=="") 
         { 
          $('#issnMsg').hide(500); 
          $('#issnMsg .formErrorContent').html("* This field is required!<br />"); 
          $('#issnMsg').css('margin-left', $('#'+field).width()-20); 
          $('#issnMsg').show(500); 
          $('#issn').focus(); 
          $('html:not(:animated),body:not(:animated)').animate({scrollTop: $('#issn').offset().top-50}, 0); 
          return false; 
         } 
         else 
         { 
          return true; 
         } 
    
        } 
        return false; 
    } 
    

    的问题是,即使在函数返回时假,表格仍然提交。什么做错了?以及如何防止提交?

    +2

    你如何提交表单? – fedosov 2012-07-11 07:43:35

    +0

    使用输入提交,因为没有提交按钮 – 2012-07-11 07:48:19

    +1

    -1使用StackOverflow作为调试工具 – kapa 2012-07-11 07:49:23

    回答

    4

    在这一行:

    $('#issnMsg').css('margin-left', $('#'+field).width()-20); 
    

    可变field没有定义。

    Uncaught ReferenceError: field is not defined

    你必须学会​​如何调试自己的应用程序,因为你不会远没有得到它。阅读有关在您使用的任何浏览器中使用控制台的信息。

    您可以在浏览器中找到关于在您的浏览器中打开控制台的信息,请参阅this Webmasters.SE question

    +0

    +1为了解如何调试的建议。 :-) – Martijn 2012-07-11 07:50:53

    +0

    感谢您的建议,+1 – 2012-07-11 08:00:56

    +0

    @HeshamSaeed有一件事我不明白。如果您已经在使用jQuery,那么为什么不使用jQuery拥有的出色的事件处理功能呢?关注点分离。高级事件处理模型。会比旧的内联事件处理好得多。 – kapa 2012-07-11 08:05:55

    3

    打开的控制台(萤火虫,铬,歌剧,ie9有)。 检查执行validateForm()时是否没有错误。

    我的猜测是有错误行:

    $('#issnMsg').css('margin-left', $('#'+field).width()-20); 
    

    有一个错误:

    Uncaught ReferenceError: field is not defined 
    

    你已经宣布field变量?

    +0

    对于查看调试控制台的建议+1。它可以让事情变得更清晰...... – Martijn 2012-07-11 07:49:36

    相关问题