gpt4 book ai didi

javascript - Select2 - 选项项中的自定义输入字段,防止点击事件

转载 作者:行者123 更新时间:2023-11-30 19:13:25 24 4
gpt4 key购买 nike

我在启用“多个”的 Select2 字段中向每个选项项添加文本输入,我需要在单击输入时阻止所有 Select2 事件,包括下拉状态和已选择任何条件下的药丸结果。

我从另一个开始 similar question并尝试通过尝试所有 Select2 events 来扩展它以满足我的需要但我似乎无法在显示输入字段的每个地方都阻止该事件。

$('#my-select').select2({
width: '300px',
multiple: true,
templateResult: function (item) {
var $result = $('<span>'+item.text+'</span><input class="input" placeholder="Input Text Here" onclick="test()">');
return $result;
},
templateSelection: function (item) {
var $result = $('<span>'+item.text+'</span><input class="input" placeholder="Input Text Here" onclick="test()">');
return $result;
}
}).on("select2:selecting", function (e) {
console.log("selecting",e.params.args.originalEvent);
if (e.params.args.originalEvent.target.className === 'input') {
e.preventDefault();
}
}
);

http://jsfiddle.net/6spf32Lx/

此 JSFiddle 将阻止下拉选项中的 Select2 事件,但不会阻止已选择的选项(单击输入将清除该选项)。它也不会阻止药丸结果输入中的事件。

最佳答案

您的问题的解决方案是处理取消选择事件select2:unselecting可以阻止

https://select2.org/programmatic-control/events

var stopOpening = false;

$('#my-select').select2({
width: '300px',
multiple: true,
templateResult: function (item) {
var $result = $('<span class="label">'+item.text+'</span><input class="input" placeholder="Input Text Here" onclick="test()">');
return $result;
},
templateSelection: function (item) {
var $result = $('<span class="label">'+item.text+'</span><input class="input" placeholder="Input Text Here" onclick="test()">');
return $result;a
}
}).on({
"select2:unselecting": function(e) {
console.log("unselecting");
if (e.params.args.originalEvent.target.className === 'input') {
e.preventDefault();
}
},
"select2:opening": function(e) {
if(stopOpening == true){
stopOpening = false;
e.preventDefault();
}
}
});

test = function() {
console.log("click");
stopOpening = true;
}
.input {
float: right;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.10/css/select2.min.css" rel="stylesheet"/>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.10/js/select2.min.js"></script>
<select id="my-select">
<option>red</option>
<option>blue</option>
<option>green</option>
<option>yellow</option>
<option>white</option>
<option>black</option>
</select>

关于javascript - Select2 - 选项项中的自定义输入字段,防止点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58254279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com