ทำไมฉันต้องดิ้นรนกับเรื่องนี้?
ฉันมีค่า: 5
ฉันจะตรวจสอบปุ่มตัวเลือกของกลุ่ม "mygroup" ด้วยค่า 5 ได้อย่างไร
$("input[name=mygroup]").val(5); // doesn't work?
ทำไมฉันต้องดิ้นรนกับเรื่องนี้?
ฉันมีค่า: 5
ฉันจะตรวจสอบปุ่มตัวเลือกของกลุ่ม "mygroup" ด้วยค่า 5 ได้อย่างไร
$("input[name=mygroup]").val(5); // doesn't work?
คำตอบ:
ด้วยความช่วยเหลือของตัวเลือกคุณสมบัติที่คุณสามารถเลือกองค์ประกอบการป้อนข้อมูลที่มีค่าที่สอดคล้องกัน จากนั้นคุณต้องตั้งค่าแอตทริบิวต์อย่างชัดเจนโดยใช้.attr
:
var value = 5;
$("input[name=mygroup][value=" + value + "]").attr('checked', 'checked');
ตั้งแต่ jQuery 1.6 คุณยังสามารถใช้.prop
วิธีที่มีค่าบูลีน (ซึ่งควรเป็นวิธีที่ต้องการ):
$("input[name=mygroup][value=" + value + "]").prop('checked', true);
โปรดจำไว้ว่าคุณต้องลบแอตทริบิวต์ที่เลือกไว้ออกจากปุ่มตัวเลือกใด ๆ ภายใต้กลุ่มปุ่มตัวเลือกเดียวจากนั้นคุณจะสามารถเพิ่มคุณสมบัติ / คุณสมบัติที่ตรวจสอบแล้วไปยังปุ่มตัวเลือกปุ่มใดตัวหนึ่งในกลุ่มปุ่มตัวเลือกนั้น
รหัสเพื่อลบแอททริบิวต์ที่เลือกจากปุ่มตัวเลือกทั้งหมดของกลุ่มปุ่มตัวเลือกหนึ่ง -
$('[name="radioSelectionName"]').removeAttr('checked');
.is
จะไม่ช่วยนี่ .prop
แต่ผมเห็นด้วยกับ ไม่สามารถใช้งานได้ในตอนนั้น;) จะอัปเดตคำตอบของฉัน ขอบคุณ!
.val()
สนับสนุนการตั้งค่าในกลุ่มวิทยุหรือช่องทำเครื่องหมาย คำตอบของวิธีนี้ใช้งานได้ทางเทคนิค แต่เป็นวงเวียนและอ่าน / จดจำได้น้อยกว่ามาก
มีวิธีที่ดีกว่าในการตรวจสอบวิทยุและช่องทำเครื่องหมายคือ คุณต้องผ่านอาร์เรย์ของค่าไปยังวิธี val แทนค่า raw
หมายเหตุ:หากคุณเพียงแค่ส่งค่าด้วยตัวเอง (โดยไม่ต้องอยู่ภายในอาร์เรย์ ) นั่นจะส่งผลให้ค่าทั้งหมดของ "mygroup" ถูกตั้งค่าเป็นค่า
$("input[name=mygroup]").val([5]);
นี่คือเอกสาร jQuery ที่อธิบายวิธีการทำงาน: http://api.jquery.com/val/#val-value
และ.val([...])
ยังทำงานร่วมกับองค์ประกอบของแบบฟอร์มเหมือน<input type="checkbox">
, <input type="radio">
และ<option>
s <select>
ภายในของ
อินพุตและตัวเลือกที่มีค่าที่ตรงกับหนึ่งในองค์ประกอบของอาร์เรย์จะถูกตรวจสอบหรือเลือกในขณะที่ผู้ที่มีค่าที่ไม่ตรงกับหนึ่งในองค์ประกอบของอาร์เรย์จะถูกยกเลิกการเลือกหรือยกเลิกการเลือก
ซอแสดงให้เห็นถึงการทำงานนี้: https://jsfiddle.net/92nekvp3/
$("input[name='mygroup'][value='5']").attr("checked", true);
เมื่อคุณเปลี่ยนค่าคุณสมบัติเช่นที่กล่าวถึงข้างต้นchange
เหตุการณ์จะไม่ถูกเรียกดังนั้นหากจำเป็นด้วยเหตุผลบางประการคุณสามารถทริกเกอร์ได้เช่นนั้น
$('input[name=video_radio][value="' + r.data.video_radio + '"]')
.prop('checked', true)
.trigger('change');
$("input[name='RadioTest'][value='2']").prop('checked', true);
หรือคุณสามารถเขียนค่าคุณลักษณะลงไปได้:
$(':radio[value=<yourvalue>]').attr('checked',true);
มันใช้งานได้สำหรับฉัน
var key = "Name_radio";
var val = "value_radio";
var rdo = $('*[name="' + key + '"]');
if (rdo.attr('type') == "radio") {
$.each(rdo, function (keyT, valT){
if ((valT.value == $.trim(val)) && ($.trim(val) != '') && ($.trim(val) != null))
{
$('*[name="' + key + '"][value="' + (val) + '"]').prop('checked', true);
}
})
}
เพียว JavaScript รุ่น:
document.querySelector('input[name="myradio"][value="5"]').checked = true;
$('input[name="mygroup"]').val([5])