输入值偶尔变化

Input Values Sporadically Changing

本文关键字:变化 偶尔 输入      更新时间:2023-10-02

我有一个表单,它正在通过jQuery进行修改,以更改某些字段的位置。然后,当提交表单时,它会使用这些字段的位置来确定相对的"位置"值。

不幸的是,它似乎只是偶尔对字段的相对位置进行更改。更具体地说,它似乎只是偶尔注册顶级更改,而第二级更改似乎是一致注册的:

$("#newsletter_form").on("submit", function(e) {
    e.preventDefault();
    $('.newsletter_category').each(function(i, category) {
        $(category).find('.category_position').val(i + 1);
        $(category).children('.fields').each(function(j, article) {
            $(article).find('.article_position').val(j + 1);
        });
    });
    $("#newsletter_form").unbind('submit').submit();
});

基本上,当调用"submit"事件时,它会遍历每个newsletter_category,更改该newsletter_category的category_position字段相对于任何其他newsletter@category字段的位置,然后更改newsletter_tategory中每篇文章的位置。或者至少这是想要的行为。

我已经评论了最后一行,并确认一切都设置正确,所以我的下一个最佳猜测是存在某种竞争条件。但jQuery每个函数都是同步的,所以我无法想象会发生什么样的竞争条件。

有什么想法吗?

好的,想好了。

对于好奇的人来说,这个问题涉及Rail的Turbolinks。具体来说,Turbolinks没有注册jQuery.ready()事件,因此其中的任何代码都不会被正确注册。有很多方法可以解决这个问题,但如果这对你的应用程序来说不是真正必要的,我会完全删除Turbolinks(就像我做的那样)。