我有一个位于 jQuery UI 对话框中的表单,每次打开和关闭对话框时都会创建和销毁该对话框(作为敲除自定义绑定的一部分)。问题是 jQuery 验证在对话框第一次打开时起作用,但如果我关闭然后重新打开对话框,则不起作用。
这是 jQuery UI 对话框中表单的简化片段:
<div id="product-panel" data-bind="dialog: { autoOpen: false, destroyOnClose: true }, showDialog: $parent.selectedProduct">
<form data-bind="submit: saveMe" id="product-form" method="post">
<label>
Name
<input type="text" id="productName" name="productName" data-bind="value: productName">
</label>
<button type="submit" class="button">save</button>
</form>
</div>
我也会显示 ko.bindingHandlers.dialog 的内容,但我认为它与问题无关。关于对话框自定义绑定需要了解的一件事是,它将 jQuery UI 对话框配置为在关闭时销毁。
每当对话框再次打开时,我使用 jQuery 的 on() 方法将验证重新绑定到表单:
$("body").on("dialogopen", "#product-panel", function(event) {
$('#product-form').validate({
rules: {
productName: {
required: true
}
}
});
});
有什么想法吗?哦,我不想使用淘汰赛验证(出于其他原因)。
jquery 2.0,jquery ui 1.9.2,jquery 验证 1.11.1,淘汰赛 2.2.0