我们的设计机构提供了使用NiceForms的 HTML 。我遇到的问题是这搞砸了 jQuery 事件绑定。
我有以下代码:
keys = $("#key input");
$(keys).each(function(){
$(this).change(function() {
console.log("hi");
});
});
如果我禁用 NiceForms,则此代码有效,但启用 Niceforms 时则无效。我该如何解决这个问题?
我们的设计机构提供了使用NiceForms的 HTML 。我遇到的问题是这搞砸了 jQuery 事件绑定。
我有以下代码:
keys = $("#key input");
$(keys).each(function(){
$(this).change(function() {
console.log("hi");
});
});
如果我禁用 NiceForms,则此代码有效,但启用 Niceforms 时则无效。我该如何解决这个问题?
修复代码中的拼写错误,然后看看它是否有效:
keys = $("#key input");
$(keys).each(function(){
$(this).change(function() {
console.log("hi");
}); // <-- oops
}); // <-- oops
我使用 NiceForms 演示进行了测试:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
和选择器keys = $(".niceform input");
,并在修复错别字后,它按预期工作。您将代码包含在$(document).ready(function () {}
处理程序中,对吗?#key
是包含表单输入元素的元素的正确选择器,对吗?
好的,事实证明,问题在于单击 Niceforms 图像时不会引发底层复选框的 onchange 事件。
要引发底层事件,请在 NiceForms.js 中找到 inputCheck 函数并更改以下内容(假设您使用的是 jQuery):
el.dummy.onclick = function() {
if(!this.ref.checked) {
this.ref.checked = true;
$(this.ref).change(); //added
this.className = "NFCheck NFh";
}
else {
this.ref.checked = false;
$(this.ref).change(); //added
this.className = "NFCheck";
}
}