在Jquery中将一个标志从一个事件传递到另一个事件

时间:2016-03-31 17:10:04

标签: javascript jquery

如果我在一个id为“input_id”的表单中有一个文本输入字段。在加载页面期间,我将使用现有数据填充该字段

使用id“form_submit”按钮提交表单时,我想确定该字段是否已被更改。因此,我将采取与变更有关的特定行动。

In Jquery:

$("#input_id").on("keyup",function(){
    //set a flag to indicate the field is altered
})

$("#form_submit").on("click",function(){
    //check flag to see if #input_id is changed
}

那么如何在一个事件中设置一个标志,并在不使用全局变量的情况下在另一个事件中读取它?

提前致谢

3 个答案:

答案 0 :(得分:5)

一种选择是使用表单数据属性:

$("#input_id").on("keyup",function(){
    //set a flag to indicate the field is altered
    $(this).closest('form').data('changed',true);
})

$("#form_submit").on("click",function(){
    //check flag to see if #input_id is changed
    console.log($(this).closest('form').data('changed'));
}

答案 1 :(得分:3)

那么为什么不只是一个上限范围标志?

var flag = false;
$("#input_id").on("keyup",function(){
  // check stuff ...
  flag = true;
});

$("#form_submit").on("click",function(){
  if (flag) {

  } else {

  }
}

答案 2 :(得分:3)

您可以将.data()用于此目的,

var submit = $("#form_submit");

$("#input_id").on("keyup",function(){
 submit.data("changed",true);
});

submit.on("click",function(){
   if($(this).data("changed")){ //do something }
}