ฉันจะตรวจสอบได้ว่ามีตัวเลือกอยู่ใน JQuery ที่เลือกอยู่แล้วหรือไม่
ฉันต้องการเพิ่มตัวเลือกในแบบไดนามิกดังนั้นฉันจึงต้องตรวจสอบว่ามีตัวเลือกอยู่แล้วเพื่อป้องกันการทำซ้ำ
ฉันจะตรวจสอบได้ว่ามีตัวเลือกอยู่ใน JQuery ที่เลือกอยู่แล้วหรือไม่
ฉันต้องการเพิ่มตัวเลือกในแบบไดนามิกดังนั้นฉันจึงต้องตรวจสอบว่ามีตัวเลือกอยู่แล้วเพื่อป้องกันการทำซ้ำ
คำตอบ:
สิ่งนี้จะประเมินว่าเป็นจริงหากมีอยู่แล้ว:
$("#yourSelect option[value='yourValue']").length > 0;
อีกวิธีใช้ jQuery:
var exists = false;
$('#yourSelect option').each(function(){
if (this.value == yourValue) {
exists = true;
}
});
.length
อาจทำ
if ( $("#your_select_id option[value=<enter_value_here>]").length == 0 ){
alert("option doesn't exist!");
}
var exists = $("#yourSelect option")
.filter(function (i, o) { return o.value === yourValue; })
.length > 0;
นี่เป็นข้อได้เปรียบของการหลบหลีกมูลค่าโดยอัตโนมัติซึ่งจะทำให้การเสนอราคาแบบสุ่มในข้อความง่ายต่อการจัดการ
ไม่ทำงานคุณต้องทำสิ่งนี้:
if ( $("#your_select_id option[value='enter_value_here']").length == 0 ){
alert("option doesn't exist!");
}
มันช่วยฉัน:
var key = 'Hallo';
if ( $("#chosen_b option[value='"+key+"']").length == 0 ){
alert("option not exist!");
$('#chosen_b').append("<option value='"+key+"'>"+key+"</option>");
$('#chosen_b').val(key);
$('#chosen_b').trigger("chosen:updated");
}
});
ฉันมีปัญหาที่คล้ายกัน แทนที่จะทำการค้นหาผ่าน dom ทุกครั้งแม้ว่าการวนรอบสำหรับตัวควบคุมการเลือกฉันบันทึกองค์ประกอบการเลือก jquery ในตัวแปรและทำสิ่งนี้:
function isValueInSelect($select, data_value){
return $($select).children('option').map(function(index, opt){
return opt.value;
}).get().includes(data_value);
}
แม้ว่าคำตอบอื่น ๆ ส่วนใหญ่ใช้ได้สำหรับฉันฉันใช้. find ():
if ($("#yourSelect").find('option[value="value"]').length === 0){
...
}