การใช้ jQuery คุณจะตรวจสอบได้อย่างไรว่ามีตัวเลือกในเมนูที่เลือกหรือไม่ถ้าไม่ให้กำหนดหนึ่งในตัวเลือกที่เลือก
(ตัวเลือกถูกสร้างขึ้นด้วยฟังก์ชั่นของเขาวงกต PHP ในแอพที่ฉันเพิ่งได้รับดังนั้นนี่คือการแก้ไขอย่างรวดเร็วในขณะที่ฉันเดินไปรอบ ๆ พวกมัน :)
การใช้ jQuery คุณจะตรวจสอบได้อย่างไรว่ามีตัวเลือกในเมนูที่เลือกหรือไม่ถ้าไม่ให้กำหนดหนึ่งในตัวเลือกที่เลือก
(ตัวเลือกถูกสร้างขึ้นด้วยฟังก์ชั่นของเขาวงกต PHP ในแอพที่ฉันเพิ่งได้รับดังนั้นนี่คือการแก้ไขอย่างรวดเร็วในขณะที่ฉันเดินไปรอบ ๆ พวกมัน :)
คำตอบ:
ในขณะที่ฉันไม่แน่ใจเกี่ยวกับสิ่งที่คุณต้องการให้สำเร็จรหัสนี้ใช้งานได้สำหรับฉัน
<select id="mySelect" multiple="multiple">
<option value="1">First</option>
<option value="2">Second</option>
<option value="3">Third</option>
<option value="4">Fourth</option>
</select>
<script type="text/javascript">
$(document).ready(function() {
if (!$("#mySelect option:selected").length) {
$("#mySelect option[value='3']").attr('selected', 'selected');
}
});
</script>
$("#mySelect").val(3);
$("#mySelect option")[2]['selected'] = true;
คิดออกหลังจากตรวจสอบโครงสร้างวัตถุใน Firebug
$("#mySelect").prop("selectedIndex", 2)
ไม่จำเป็นต้องใช้ jQuery สำหรับสิ่งนี้:
var foo = document.getElementById('yourSelect');
if (foo)
{
if (foo.selectedIndex != null)
{
foo.selectedIndex = 0;
}
}
คำถามนี้เก่าและมีมุมมองมากมายดังนั้นฉันจะทิ้งบางสิ่งไว้ที่นั่นเพื่อช่วยคนที่ฉันมั่นใจ
ในการตรวจสอบว่าองค์ประกอบที่เลือกมีรายการที่เลือกหรือไม่:
if ($('#mySelect option:selected').length > 0) { alert('has a selected item'); }
หรือเพื่อตรวจสอบว่าการเลือกไม่มีอะไรเลือก:
if ($('#mySelect option:selected').length == 0) { alert('nothing selected'); }
หรือถ้าคุณอยู่ในวงวนของการเรียงลำดับและต้องการตรวจสอบว่ามีการเลือกองค์ประกอบปัจจุบันหรือไม่:
$('#mySelect option').each(function() {
if ($(this).is(':selected')) { .. }
});
เพื่อตรวจสอบว่าองค์ประกอบไม่ได้ถูกเลือกขณะอยู่ในลูปหรือไม่:
$('#mySelect option').each(function() {
if ($(this).not(':selected')) { .. }
});
นี่คือวิธีที่จะทำสิ่งนี้ jQuery มีหลายวิธีในการทำสิ่งเดียวกันดังนั้นคุณมักจะเลือกว่าอันไหนจะมีประสิทธิภาพมากที่สุด
คำตอบของ lencioniคือสิ่งที่ฉันอยากจะแนะนำ คุณสามารถเปลี่ยนตัวเลือกสำหรับตัวเลือก('#mySelect option:last')
เพื่อเลือกตัวเลือกด้วยค่าเฉพาะโดยใช้ " #mySelect option[value='yourDefaultValue']
" เพิ่มเติมเกี่ยวกับตัวเลือก
หากคุณกำลังทำงานอย่างกว้างขวางกับรายการเลือกที่ลูกค้าตรวจสอบปลั๊กอินนี้: http://www.texotela.co.uk/code/jquery/select/ ดูที่แหล่งข้อมูลหากคุณต้องการดูตัวอย่างเพิ่มเติมเกี่ยวกับการทำงานกับรายการที่เลือก
นี่คือฟังก์ชั่นของฉันเปลี่ยนตัวเลือกที่เลือก มันใช้งานได้กับ jQuery 1.3.2
function selectOption(select_id, option_val) {
$('#'+select_id+' option:selected').removeAttr('selected');
$('#'+select_id+' option[value='+option_val+']').attr('selected','selected');
}
<script type="text/javascript">
$(document).ready(function() {
if (!$("#mySelect option:selected").length)
$("#mySelect").val( 3 );
});
</script>
ง่าย! ค่าเริ่มต้นควรเป็นตัวเลือกแรก ทำ! นั่นจะนำคุณไปสู่ JavaScript ที่ไม่สร้างความรำคาญเพราะ JavaScript ไม่จำเป็น :)
ฉันเจอปลั๊กอินของ texotelaแล้วซึ่งให้ฉันแก้ปัญหาแบบนี้:
$(document).ready(function(){
if ( $("#context").selectedValues() == false) {
$("#context").selectOptions("71");
}
});
ดูดัชนีที่เลือกของselect
องค์ประกอบ BTW นั่นเป็นสิ่งธรรมดา ol 'DOM ไม่ใช่ JQuery-specific
นี่เป็นสคริปต์ด่วนที่ฉันพบว่าใช้ได้ผล ... .Result ถูกกำหนดให้กับป้ายกำกับ
$(".Result").html($("option:selected").text());
พวกคุณเลือกวิธีมากเกินไป เพียงเลือกตามค่า:
$("#mySelect").val( 3 );
if (!$("#select").find("option:selected").length){
//
}
ฉันพบวิธีที่ดีในการตรวจสอบหากมีการเลือกตัวเลือกและเลือกค่าเริ่มต้นเมื่อไม่มี
if(!$('#some_select option[selected="selected"]').val()) {
//here code if it HAS NOT selected value
//for exaple adding the first value as "placeholder"
$('#some_select option:first-child').before('<option disabled selected>Wybierz:</option>');
}
หาก#some_selectยังไม่ได้เลือกตัวเลือกเริ่มต้นแล้ว. val ()จะไม่ถูกกำหนด
$("option[value*='2']").attr('selected', 'selected');
// 2 for example, add * for every option
$("#select_box_id").children()[1].selected
นี่เป็นอีกวิธีในการตรวจสอบว่ามีการเลือกตัวเลือกหรือไม่ สิ่งนี้จะส่งคืนบูลีน (จริงหรือเท็จ)
[1] คือดัชนีของตัวเลือกกล่องที่เลือก
เปลี่ยนเหตุการณ์ในกล่องเลือกเพื่อเริ่มและเมื่อมันทำเพียงแค่ดึงแอตทริบิวต์ id ของตัวเลือกที่เลือก: -
$("#type").change(function(){
var id = $(this).find("option:selected").attr("id");
switch (id){
case "trade_buy_max":
// do something here
break;
}
});
ฉันแค่มองหาบางสิ่งที่คล้ายกันและพบสิ่งนี้:
$('.mySelect:not(:has(option[selected])) option[value="2"]').attr('selected', true);
นี่จะค้นหาเมนูที่เลือกทั้งหมดในคลาสที่ยังไม่มีตัวเลือกที่เลือกไว้และเลือกตัวเลือกเริ่มต้น ("2" ในกรณีนี้)
ฉันลองใช้:selected
แทน[selected]
แต่ไม่ได้ผลเพราะเลือกบางสิ่งอยู่เสมอแม้ว่าจะไม่มีคุณสมบัติใด ๆ ก็ตาม
หากคุณต้องการตรวจสอบแต่ละตัวเลือกอย่างชัดเจนเพื่อดูว่ามีคุณลักษณะ "เลือก" หรือไม่คุณสามารถทำได้ มิฉะนั้นจะใช้option:selected
คุณจะได้รับค่าสำหรับตัวเลือกเริ่มต้นแรก
var viewport_selected = false;
$('#viewport option').each(function() {
if ($(this).attr("selected") == "selected") {
viewport_selected = true;
}
});