2016-03-15 49 views
1

我创建的选择,从数据库中选择数据,但设置ID =“myselect”的选择如何避免在Jquery中选择项目时更改事件?

但是,如果我选择了一个项目将调用,切换到另一个项目,我想AJAX调用只有一本AJAX用户点击其项目的次数。

$(document).on("click", "#myselect", function (e) { 

    $.ajax({ 
     url: '/teller/assignTo', 
     dataType: 'json', 
     Method: 'get', 
     success: function (data, status) { 

      var userId = data.users; 
      $.each(userId, function (key, value) { 
       $('#myselect').append($("<option></option>").attr("value", key).text(value.name)); 
      }); 
     }, 
     error: function() { 
      throw new Error("Could not load " + data); 
     } 
    }); 
}); 

HTML

<select name="assign_user_id" id="myselect" class="form-control" ></select> 
+4

可以使用$(文件)。一而不是$(document).on ..将只执行一次 – anshuVersatile

+0

$(document).on(“change”,“#myselect”,function(e){//使用改变事件而不是点击 – CodeIsLife

+0

它不能工作因为我第一次没有选择的价值。 –

回答

1

试试这个

HTML

<select name="assign_user_id" id="myselect" class="form-control not-clicked" ></select> 

JQuery的

$(document).on("click", "#myselect", function (e) { 
    if($(this).hasClass("not-clicked")) { 
     $.ajax({ 
      url: '/teller/assignTo', 
      dataType: 'json', 
      Method: 'get', 
      success: function (data, status) {  
       var userId = data.users; 
       $.each(userId, function (key, value) { 
        $('#myselect').append($("<option></option>").attr("value", key).text(value.name)); 
       }); 
      }, 
      error: function() { 
       throw new Error("Could not load " + data); 
      } 
     }); 
     $(this).removeClass("not-clicked"); 
    } 
}); 
+0

哦,我已经附加这个选择从另一个jquery,所以我必须使用$(document).on();如果我使用$(选择器).on()它不会工作 –

+0

现在修改代码尝试,希望这项工作 –

+0

如果ajax加载失败,我必须再次插入检查类吗?并且对性能有好处 –

相关问题