动态select2未触发更改事件
我有一个内部有几个选择的表单。 我正在将select2 jquery插件应用于这样的选择:
$("select.company_select, select.positions_select").select2();
select的工作正常,但是我有这个代码自动提交我的表单(我在表单标签上有autosubmit类)。
var currentData; $('.autosubmit input, .autosubmit select, .autosubmit textarea').live('focus', function () { currentData = $(this).val(); }); $('.autosubmit input, .autosubmit select, .autosubmit textarea').live('change', function () { console.log('autosubmiting...'); var $this = $(this); if (!currentData || currentData != $this.val()) { $($this.get(0).form).ajaxSubmit(function (response, status, xhr, $form) { currentData = ""; }); } });
问题是,使用select2,更改或焦点事件根本不会触发。 如果我删除select2,那么事件会被完全解雇。
我究竟做错了什么?
Select2只有2个事件, open
和change
( http://select2.github.io/select2/#events ),您只能向它们添加侦听器。 您可以使用open
事件而不是focus
来元素。 请不要使用
live()
方法,因为它已被弃用。 使用on()
代替。
var currentData; $(".autosubmit select").on("open", function() { currentData = $(this).val(); }); $(".autosubmit input").on("focus", function() { currentData = $(this).val(); }); $(".autosubmit input, .autosubmit select").on("change", function() { var $this = $(this); console.log('autosubmitting'); if (!currentData || currentData != $this.val()) { $($this.get(0).form).ajaxSubmit(function (response, status, xhr, $form) { currentData = ""; }); } });
这是小提琴