JQuery:基于表单输入长度的触发事件

时间:2015-10-22 16:11:16

标签: jquery ruby-on-rails forms javascript-events

我试图在表单长度发生变化时自动保存表单。 以下是我的代码。正确记录初始表单长度和变量$(“表单输入”)。当我使用表单但if语句中的块未被触发时,长度会发生变化。

任何人都知道这是为什么?

False

更新:Florian已经完美地解决了这个问题。我有一个新问题的更新。我拥有的表单是使用Cocoon gem in rails的嵌套表单。只要添加了嵌套中的一个子项,就会加载datepicker.js。

但是,日期选择器仅在设定的时间间隔后加载。

以下是我的新代码。有什么想法吗?

var formLength = $(“表格输入”)。长度;     console.log(“当前formLength是:”+ formLength);

var formLength = $("form input").length;
console.log("the current formLength is" + formLength);

$(document).ready(function() {
  if ($("form input").length > formLength) {
    setTimeout(autoSaveForm, 10000);

    formLength = $("form input").length;

    console.log("the updated formLength is" + formLength);
  }
});

1 个答案:

答案 0 :(得分:0)

不确定你要干的是什么,但这是一个有效的例子:

var formLength = $("form input").val().length;
console.log("the current formLength is : " + formLength);

$(document).ready(function() {
    setInterval(function(){ 
      if ($("form input").val().length > formLength) {
        formLength = $("form input").length;
        console.log("the updated formLength is" + formLength);
        //setTimeout(autoSaveForm, 10000); //auto save!
      } else {
        console.log("Nop. (" + $("form input").val().length + ")");   
      }    
    }, 3000);
});

document.ready fonction中的所有内容只会在页面加载后执行,所以如果你想要一个reccurent检查,你需要一个setInterval(例如定期执行)。

您还可以在文本输入上添加偶数,例如:

$("form input").bind("change paste keyup", function() {
   //but your code inside
});