2015-12-02 15 views
0

我遇到了關於如何使用jQuery驗證應用規則的問題。即使輸入未按要求設置,jquery驗證規則也適用

如果聲明瞭FirstName的規則,那麼即使輸入沒有必需的屬性集,jQuery驗證也會觸發該字段的驗證錯誤。

我在jQuery表單構建器插件中將驗證作爲嵌套函數運行。 該插件基於從marketo收到的json數據生成表單。 嵌套驗證的原因是,可以在一個腳本中管理跨幾個域的多個表單的驗證。

我查詢的原因如何防止規則觸發它所需的屬性不適用於表單字段是因爲marketo如何輸出表單和表單名稱。

實例形式:

<form action="" id="form" method="post"> 
    <div class="formrow"> 
    <label for="FirstName">First name: </label> 
    <input type="text" name="FirstName" id="FirstName"> 
    </div> 
    <input type="submit" value="submit"> 
</form> 

實例驗證:

$('#form').validate({ 
    rules: { 
     FirstName: { 
     required: true 
     } 
    }, 
    messages: { 
     FirstName: "Please enter your name" 
    }, 
    submitHandler: function (form) { 
     $(form).ajaxSubmit({ 
     error: function (response) { 
      console.log(response); 
     }, 
     success: function (response) { 
      console.log(response); 
     } 
     }); 
    }, 
    errorElement: "em", 
    errorPlacement: function (error, element) { 
     error.appendTo(element.closest(".formrow").children("label")); 
    } 
    }); 

我已經把演示是爲了說明這個問題。

http://jsfiddle.net/onebitrocket/dzv5ugo0/

回答

1

required屬性不是元素,但你已經在rules對象定義爲required: trueFirstName,因此爲什麼是必需的領域。刪除該元素的rules對象,它應該按照您的要求工作。

Updated fiddle

+0

謝謝,但將只對一種形式的工作。我需要一種解決方法,以便我可以使用基於不同形式共享的單個驗證代碼,其中並非所有字段總是需要的 - 我可以想到的一個選擇是完全刪除所有形式的規則,這似乎工作得很好。另一個是基於marketo提供的json數據動態生成驗證規則和消息。我想知道這是否有可能? – onebitrocket