javascript
  • forms
  • javascript-events
  • 2012-07-11 60 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

    相關問題