输入值偶尔会发生变化

时间:2015-02-12 18:45:03

标签: javascript jquery html ruby-on-rails

我有一个通过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更改该newsletter_category的category_position字段的位置,然后更改newsletter_category中每篇文章的位置。或者至少那是期望的行为。

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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

好的,想通了。

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