我正在使用jquery来创建一个多选框。 我的问题是,第三个选项必须打开一个新窗口,不能选择。 (稍后用户可以在此窗口中创建新选项)
有人能帮我实现这个吗? 我的想法是使用$('.chosen-select').on('change'...)
来删除列表中的所选项目。
但我不知道如何
<div class="wrapper">
<select data-placeholder="options" style="width:350px;" multiple class="chosen-select">
<option value=""></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3" onClick="openPopup()">3</option>
</select>
</div>
谢谢你!
答案 0 :(得分:1)
如果我理解正确,这应该可以解决您的问题:
$('.chosen-select').on('mouseup', function(){ // on finish the click on any part of the multiselect
if($(this).val().indexOf('3') !== -1){ // if value has the 3 selected [1,3]
openPopup(); // open the popup
}
});
但如果你想让它只在选项3上工作,你可以这样做
$('.chosen-select').on('mouseup','.openPopup', function(){ // on finish the click on option of class openPopup
if($(this).val() == 3){
openPopup(); // open the popup
}
});
至于删除:
$('.chosen-select').on('mouseup','.openPopup', function(){ // on finish the click on option of class openPopup
if($(this).val() == 3){
openPopup($(this)); // open the popup
}
});
function openPopup(obj){
//Popup functions...
obj.remove();
}
这应该可以解决您的问题
答案 1 :(得分:1)
您可以尝试这样的事情:
$('option[value="3"]').click(function(e){
// The line below is just for demonstration purposes
// you could replace with your openPopup() function
window.open('http://www.google.com','_blank');
// Remove the element
$(this).remove();
e.preventDefault();
});
这是一个显示行动中的行为的小提琴:http://jsfiddle.net/95xS5/2/
答案 2 :(得分:1)
我已经解决了它:
$('.chosen-select').chosen().change( function() {
var selectedValue = $(this).find('option:selected').val();
if(selectedValue=='3'){
$(this).find('option:selected').prop("selected",false);
openPopup();
}
$('.chosen-select').trigger("chosen:updated");
});