如何在 select2 上触发事件
how to trigger event on select2
大家好,我的销售商品页面中有一些 select 标签。第一个由 HTML 创建,其他由 jquery 创建 当用户单击按钮时追加 添加更多
<select id='code0' onclick='getvalue(this)'><option>1</option></select>
并且在 document.ready
中,我在此 select 标签上应用 select2
$(document).ready(function(){
$("#code0").select2();
})
function append(){
$("table").append("<tr><td><select id='code1' onclick='getvalue(this)'><option>1</option></select></td></tr>");
$("#code1").select2();
}
下一个附加的 select 的 ID 为 code2。我管理它没有任何问题
现在,函数 getvalue() 在应用 select2 之前工作正常,但在应用 select2 之后,select 不会触发点击或任何事件。应用 select 2;
后如何触发事件
function getvalue(item){
alert("event triggered"); // to check that jquery called this function or not
console.log(item.value);
}
点击 select 标签没有调用获取值函数;
每当页面加载时,我都会在控制台上看到此错误
jQuery-2.1.4.min.js:2 Uncaught TypeError: Cannot read property 'call' of null
at Function.each (jQuery-2.1.4.min.js:2)
at MutationObserver.<anonymous> (select2.min.js:2)
将 select2 链接到现有 select 后。
select2 覆盖 select 并为所有选项创建列表 (li),并且隐藏 select。
因此添加到 select 的任何事件都不会直接起作用。
Select2 插件提供了可用于满足您需要的功能
将 select2 ele 分配为 var 并使用插件提供的方法
var select2Ele = $("#code0").select2();
select2Ele.on("select2:select", function (event) {
// after option is selected
});
select2Ele.on("select2:selecting", function (event) {
// before selection
});
对于多个 select2,上面的代码将像这样工作。在日志方法中,我们有事件可用于获取当前元素值和其他内容
$eventSelect.on("change", function (e) { log("change"); });
function log (name, evt) {
if (!evt) {
var args = "{}";
} else {
var args = JSON.stringify(evt.params, function (key, value) {
if (value && value.nodeName) return "[DOM node]";
if (value instanceof $.Event) return "[$.Event]";
return value;
});
}
var $e = $("<li>" + name + " -> " + args + "</li>");
$eventLog.append($e);
$e.animate({ opacity: 1 }, 10000, 'linear', function () {
$e.animate({ opacity: 0 }, 2000, 'linear', function () {
$e.remove();
});
});
}
大家好,我的销售商品页面中有一些 select 标签。第一个由 HTML 创建,其他由 jquery 创建 当用户单击按钮时追加 添加更多
<select id='code0' onclick='getvalue(this)'><option>1</option></select>
并且在 document.ready
中,我在此 select 标签上应用 select2
$(document).ready(function(){
$("#code0").select2();
})
function append(){
$("table").append("<tr><td><select id='code1' onclick='getvalue(this)'><option>1</option></select></td></tr>");
$("#code1").select2();
}
下一个附加的 select 的 ID 为 code2。我管理它没有任何问题
现在,函数 getvalue() 在应用 select2 之前工作正常,但在应用 select2 之后,select 不会触发点击或任何事件。应用 select 2;
后如何触发事件function getvalue(item){
alert("event triggered"); // to check that jquery called this function or not
console.log(item.value);
}
点击 select 标签没有调用获取值函数;
每当页面加载时,我都会在控制台上看到此错误
jQuery-2.1.4.min.js:2 Uncaught TypeError: Cannot read property 'call' of null
at Function.each (jQuery-2.1.4.min.js:2)
at MutationObserver.<anonymous> (select2.min.js:2)
将 select2 链接到现有 select 后。
select2 覆盖 select 并为所有选项创建列表 (li),并且隐藏 select。
因此添加到 select 的任何事件都不会直接起作用。
Select2 插件提供了可用于满足您需要的功能
将 select2 ele 分配为 var 并使用插件提供的方法
var select2Ele = $("#code0").select2();
select2Ele.on("select2:select", function (event) {
// after option is selected
});
select2Ele.on("select2:selecting", function (event) {
// before selection
});
对于多个 select2,上面的代码将像这样工作。在日志方法中,我们有事件可用于获取当前元素值和其他内容
$eventSelect.on("change", function (e) { log("change"); });
function log (name, evt) {
if (!evt) {
var args = "{}";
} else {
var args = JSON.stringify(evt.params, function (key, value) {
if (value && value.nodeName) return "[DOM node]";
if (value instanceof $.Event) return "[$.Event]";
return value;
});
}
var $e = $("<li>" + name + " -> " + args + "</li>");
$eventLog.append($e);
$e.animate({ opacity: 1 }, 10000, 'linear', function () {
$e.animate({ opacity: 0 }, 2000, 'linear', function () {
$e.remove();
});
});
}