2012-03-10 124 views
0

我正在使用Jquery validate函數進行表單驗證。到目前爲止,我一直在向頁面元素添加錯誤消息,但是現在我想要將其顯示在警報彈出窗口中。 當用戶未選擇任何內容時,警告彈出窗口成功顯示錯誤消息,但是當他們提交有效表單時(此時沒有錯誤消息),彈出窗口仍然出現。JQuery表單驗證彈出警報 - 警告仍然顯示有效提交

如何阻止彈出窗口在有效的表單提交後出現?

這是我的js代碼,我實現了單選按鈕的警報。你可以看到在行動上http://hiplogger.hip-zone.co.za/partner/mobile

$("#quickieform").validate({ 
    rules: { 
     answer: "required" 
    }, 
    answer: { 
     answer: "Please make a selection" 
    }, 
    errorPlacement: function(error, element) { 
     if (element.is(":radio")) 
      alert(error.html()); 

     else if (element.is(":checkbox")) 
      error.appendTo(("#alertbox")); 

     else 
      error.appendTo(("#alertbox")); 
    }, 
    submitHandler: function(form) { 
     // do other stuff for a valid form 
     form.submit(); 
    }, 
    success: function(label) { 
     // set as text for IE 
     label.html(" ").addClass("checked"); 
    } 
}); 

回答

0

這難道是errorPlacement運行,無論實際的錯誤。這可能是這種情況,因爲當您運行$("#quickieform").valid()時,它會運行驗證 - 檢查警報,然後返回true。我沒有在警報中看到實際的錯誤消息。您可能需要將其移至invalidHandler功能:

$("#quickieform").validate({ 
    rules: ... 
    answer: ... 
    invalidHandler: function(form, validator) { 
     var errors = validator.numberOfInvalids(); 
     if (errors) { 
     alert("You have " + error + " errors that need to be fixed"); 
     } 
    } 
    ... 
}) 

或者只是修改errorPlacement也檢查error.html != ""

if (element.is(":radio") && error.html != "") 

希望這有助於!

0

感謝您的回覆。我得到了它的工作,但我不知道爲什麼它的工作。我所做的只是在最後取出「成功」一節,所以我的代碼最終看起來像這樣...

$("#quickieform").validate({ 
    rules: { 
      answer: "required" 
     }, 
    invalidHandler: function(form, validator) { 

    }, 
    errorPlacement: function(error, element) { 
     if (element.is(":radio") && error.html != "") 
      // error.appendTo(("#alertbox")); 
      alert(error.html()); 

     else if (element.is(":checkbox")) 
      // error.appendTo(("#alertbox")); 
     alert(error.html()); 

     else 
      error.appendTo(("#alertbox")); 
    }, 
    submitHandler: function(form) { 
      form.submit(); 
    } 

})