Niceforms 和 jQuery 事件

发布于 2024-08-25 09:13:00 字数 364 浏览 4 评论 0原文

我们的设计机构提供了使用 NiceForms 的 HTML。我遇到的问题是这搞乱了 jQuery 事件绑定。

我有以下代码:

keys = $("#key input");
$(keys).each(function(){
  $(this).change(function() {
    console.log("hi");
  });
});

如果我禁用 NiceForms,则此代码可以工作,但启用 Niceforms 后,它就不能工作。我该如何解决这个问题?

Our design agency has supplied HTML that uses NiceForms. The problem I am having is that this mucks up jQuery event binding.

I have the following code:

keys = $("#key input");
$(keys).each(function(){
  $(this).change(function() {
    console.log("hi");
  });
});

If I disable NiceForms this code works but with Niceforms enabled it doesn't. How do I get around this problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

暗藏城府 2024-09-01 09:13:00

修复代码中的拼写错误,看看它是否有效:

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 是包含表单输入的元素的正确选择器元素,对吗?

Fix the typo in your code, see if it works then:

keys = $("#key input");
$(keys).each(function(){
  $(this).change(function() {
    console.log("hi");
  });   // <-- oops
});     // <-- oops

I tested with the NiceForms demo using:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

And the selector keys = $(".niceform input"); and after fixing the typos it works as expected. You are enclosing the code in a $(document).ready(function () {} handler, right? #key is a proper selector for an element enclosing the form input elements, right?

稀香 2024-09-01 09:13:00

好吧,事实证明问题是单击 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";
    }
}

Ok it turned out that the problem was that the Niceforms image when clicked does not raise the onchange event of the underlying checkbox.

To raise the underlying event find the inputCheck function in NiceForms.js and alter the following (this assumes you are using 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";
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文