我有一個插件,通常處理用於CRUD操作的jQuery對話框的創建。添加到對話框中的表單的標記在插件代碼的外部可用,插件只需要向http服務提供標記,並在收到時簡單地將其添加到對話框本身。動態添加驗證規則
然後,我在插件(onSetupValidation
函數)中創建了一個回調函數,它是插件用戶爲每個表單定製驗證的句柄。這是我使用的代碼示例
var element = $('#mydiv');
element.crudplugin({
[...]
onSetupValidation: function(markup) {
var form = $('#myForm', markup);
var container = $('<div class="error"><p>Errors were found validating your form. Please correct them and retry.</p><ol></ol></div>')
.appendTo(form).hide();
var validator = form.validate({
errorContainer: container,
errorLabelContainer: $('ol', container),
errorElement: 'em',
wrapper: 'li',
highlight: function (element) {
$(element).addClass("ui-state-error");
},
unhighlight: function (element) {
$(element).removeClass("ui-state-error");
},
submitHandler: function (form) {
[...]
}
});
}
[...]
});
好吧。讓我們來看看問題
- 如果我在標記內添加驗證規則(作爲類屬性),驗證根本不起作用。同樣的行爲,如果我在
validate()
方法 周圍的Googling添加規則我發現有很多的樣品,expecially這裏是這樣,使用validation plugin喜歡的
.rules('add', rule)
方法下面的示例中,所有這些鏈接建議致電validate
下面的示例中添加任何規則,像以前一樣的方法$("#myField", markup).rules("add", { required: true });
但是,如果使用時istruction得到執行我收到以下錯誤此方法:
SCRIPT5007: Unable to get value of the property 'settings': object is null or undefined jquery.validate.min.js, line 15 character 257
有什麼建議嗎?
感謝您的回答。在創建對話框和表單顯示之前調用回調。在回調中,我先調用validate()然後添加規則。我將嘗試在show()方法後移動回調... – Lorenzo 2012-07-05 22:42:36
這樣做肯定會 - 如果這是一個jQuery對話框,「open」事件將是一個合適的地方。 – Ryley 2012-07-05 22:47:28