2013-08-25 153 views
0

我有一個單擊事件後在對話框中打開的窗體。我想知道在我的jQuery中是否有語法問題,我沒有注意到。提交處理函數中的日誌都沒有記錄。爲什麼jquery不能驗證工作?

HTML:

<div id="dialog" title="Thanks For Volunteering"> 
    <form> 
     <p>Please provide a contact number. It will only be shared with the comic</p> 
     <input id="number" name="number" type="text" /> 
     <button id="submit" class="button">Submit</button>  
    </form> 
</div> 

的JavaScript:

$("form").submit(function(){ 

     console.log("submit"); 
     $('#number').validate({ 
      rules: { 
        number : { 
        required: true 
        //customvalidation: true 
       }           
      }, 
      messages: { 
       number : { 
        required: "enter a phone number"     
       } 
      }, 
      submitHandler: function(form) { 
        // do other stuff for a valid form 
        //submit to parse 

        console.log("now validated"); 
        var num = $('#number').val(); 
        console.log("validated:" +' '+num); 
      }  
     }); 

    });//closes submit 

    $.validator.addMethod("customvalidation", 
     function(value, element) { 
       return (/^[A-Za-z\d=#$%@_]+$/.test(value)); 
     }, 
    "Sorry, no special characters allowed"); 
+0

[你發三週前相同的編程錯誤。](http://stackoverflow.com/q/18115160/594235)[該答案有什麼問題?](http://stackoverflow.com/a/ 18116262/594235) – Sparky

+0

謝謝你sparky。這是一個稍微不同的問題,當我在代碼中遇到這個特殊問題時,我沒有意識到這個問題已經得到解答。 – Spilot

回答

2

.validate()方法僅是插件的初始化。它永遠不會進入submit()處理程序。只需將附加到您的表單,並在DOM準備就緒時將其稱爲一次

$(document).ready(function() { 
    $('form').validate({ 
     ..... 

您還需要將您的窗體的<button>元素變成一個type="submit"

DEMOhttp://jsfiddle.net/GJggc/1/


請繼續參考這個答案上your previous question,這也解決了兩個JavaScript的問題上面連同詳細的解釋:

https://stackoverflow.com/a/18116262/594235

1

$( '#號')驗證

你有一個bug。它是應該驗證的FORM元素,而不是表單字段。

<form id="youform"> 

.... 

$('#youform').validate