javascript - 根据彼此自动更改 2 个字段

标签 javascript jquery ajax selectize.js

我正在使用selectize.js我有 2 个选择字段:

$('#field1').selectize();
$('#field2').selectize();

当第一个字段更改(或选择)时,我想自动更改第二个字段的值;反之亦然,当第二个值更改(或选择)时,更改第一个值。

我正在使用change函数,像这样:

$("#field1").change(function () {
    var d = 'value-field2'
    var $select_field2 = $("#id_field2").selectize();
    var selectize_field2 = $select_field2[0].selectize;
    selectize_field2.setValue(d);
  });

  $("#field2").change(function () {
      var d = 'value-field1'
      var $select_field1 = $("#id_field1").selectize();
      var selectize_field1 = $select_field1[0].selectize;
      selectize_field1.setValue(d);
  });
  });

但是在这里我无限调用这两个函数,互相调用,因为它们互相改变。 我尝试使用 mouseover()click() 而不是 change() 但没有成功使其工作。

有什么想法吗?

最佳答案

您需要某种变量来识别 JavaScript(而不是用户)何时更改值。你可以使用这样的东西:

var programmaticallyChanging = false;

$("#field1").change(function() {
    if (!programmaticallyChanging) {
        var d = 'value-field2'
        var $select_field2 = $("#id_field2").selectize();
        var selectize_field2 = $select_field2[0].selectize;
        programmaticallyChanging = true;
        selectize_field2.setValue(d);
        programmaticallyChanging = false;
    }
});

$("#field2").change(function() {
    if (!programmaticallyChanging) {
        var d = 'value-field1'
        var $select_field1 = $("#id_field1").selectize();
        var selectize_field1 = $select_field1[0].selectize;
        programmaticallyChanging = true;
        selectize_field1.setValue(d);
        programmaticallyChanging = false
    }
});

如果可能,请以编程方式将 var 更改为 false;进入某些函数,以便它不会暴露在窗口上。

关于javascript - 根据彼此自动更改 2 个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43471601/

相关文章:

javascript - 单击链接时,模式不会关闭

php - 通过 PHP 调用页面加载的随机记录,通过 AJAX 动态显示结果

jquery - "Freezing"/"Deactivating"滚动条

javascript toLocaleString 返回 0

javascript - 使用 onbeforeunload 事件,选择停留在此页面时 url 发生变化

javascript - CRM 身份验证问题

Javascript:如何从 JQuery Dialog 构造函数中的类描述符访问事件的 ID

javascript - 如何创建依赖于 mvc4 中字段检查的注册表单?

jquery - 在 jQuery 中使用 foreach 语句时,在所有 ajax 请求完成后调用函数

javascript - 如何使用 JavaScript 将静态值作为列表中的第一个值? ORACLE APEX - LOV 列表