如果问题,Javascript很奇怪

时间:2017-02-15 12:55:32

标签: javascript jquery html if-statement

我有两个隐藏的输入字段,当有onchange事件时会被更改。这会在加载时填充动态信息

angular.module('starter.services', [])
   .service('SocketService', ['socketFactory'],
      function SocketService(socketFactory) {
        return socketFactory({
           ioSocket: io.connect('http://l92.168.1.27:3000')
        });
   });

这个是空值和名称

<input type="hidden" id="setter" name="{{$value['name']}}" value="{{$field['values'][$value['name']]}}">

这是我的js代码

<input type="hidden" id="old_setter" name="" value="">

问题是当隐藏的setter从可见的setter获得输入时没关系,但之后当隐藏的setter上有另一个onchange事件时也会更新,但我只想更新第一个onchange事件。提前致谢

2 个答案:

答案 0 :(得分:1)

您必须在事件之外(在全局范围内)定义oldSet变量,否则它将在用户所做的每次更改时返回false,并始终达到条件:

var oldSet = false;

$('.select2').each(function (i, obj) {
  if (!$(obj).data("select2"))
  {
    $(obj).select2();
  }
}).change(function () {
  var setter = $("#setter");
  var oldSetter = $("#old_setter");

  if (oldSet != true) {
    oldSetter.val('');
    oldSetter.attr('name', setter.attr('name'));
    setter.val(($(this).val()));
    setter.attr('name', ($(this).attr('id')));
    oldSet = true;
  }else {
    setter.val(($(this).val()));
    setter.attr('name', ($(this).attr('id')));
    oldSet = true;
  }
});

希望这有帮助。

答案 1 :(得分:0)

在第一个事件之后将on change处理程序设置为空函数。

$('.select2').change(function(){});