javascript
  • jquery
  • ajax
  • selectize.js
  • 2017-04-18 55 views 0 likes 
    0

    我使用selectize.js和我有2个选择字段:变化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(),但没有成功,使其工作。

    任何想法?

    +0

    您可以创建小提琴或发布重现问题所需的最低代码? – Pugazh

    +0

    我更新了代码示例。这有帮助吗? – sergiuz

    +0

    请添加HTML – Pugazh

    回答

    1

    您需要某种变量来确定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 programmaticallyChanging = FALSE;进入某些功能,以便它不会暴露在窗口上。

    +0

    它工作。确定JS何时改变价值的好处。 – sergiuz

    相关问题