ใช้ JQuery เพื่อตรวจสอบว่าไม่มีการเลือกปุ่มตัวเลือกในกลุ่มหรือไม่


107

ฉันกำลังประสบปัญหาฉันต้องตรวจสอบกับ JQuery หากไม่มีการตรวจสอบปุ่มตัวเลือกในกลุ่มปุ่มตัวเลือกเพื่อที่ฉันจะได้แจ้งข้อผิดพลาดทางจาวาสคริปต์แก่ผู้ใช้หากพวกเขาลืมตรวจสอบตัวเลือก

ฉันใช้รหัสต่อไปนี้เพื่อรับค่า

var radio_button_val = $("input[name='html_elements']:checked").val();

คำตอบ:


146
if (!$("input[name='html_elements']:checked").val()) {
   alert('Nothing is checked!');
}
else {
  alert('One of the radio buttons is checked!');
}

17
สิ่งนี้จะล้มเหลวหากปุ่มตัวเลือกที่เลือกไว้มีค่า = ""
ScottE

1
@ScottE - จุดที่ยอดเยี่ยม - ฉันจะลบคำตอบนี้ถ้า Roland ไม่ยอมรับ
Dominic Rodger

ฉันคิดว่าคุณสามารถเปลี่ยนเป็น.val() == ""ลบ!และคุณก็จะพร้อม
Doug Neiner

@ Doug - นั่นจะยังไม่มีปัญหาที่ ScottE กล่าวถึงหรือไม่? จะ.val()ส่งคืนอะไรหากปุ่มตัวเลือกที่ถูกตรวจสอบมีvalue=""? (แม้ว่าฉันคิดว่าคุณสามารถโต้แย้งได้ว่าเป็นกรณีที่ไม่น่าเป็นไปได้)
Dominic Rodger

1
ขออภัยความคิดเห็นของฉันสับสน: ฉันตั้งใจให้การทดสอบทั้งหมดมีลักษณะเช่นนี้if ($("input[name='html_elements']:checked").val() == "")ซึ่งจะแจ้งเตือนว่า "ไม่มีการตรวจสอบ"
Doug Neiner

144

ฉันกำลังใช้

$("input:radio[name='html_radio']").is(":checked")

และจะส่งคืน FALSE หากรายการทั้งหมดในกลุ่มวิทยุไม่ถูกเลือกและเป็น TRUE หากมีการตรวจสอบรายการ


3
คำตอบนี้ใช้ได้ผลสำหรับฉันในการตรวจสอบว่ากลุ่มปุ่มตัวเลือกมีค่าที่เลือกไว้หรือไม่ คำตอบที่ดีที่สุดในกระทู้
Andy Cook

1
ทั้งคำตอบของ Dominic Rodger และ Jacobo Hernándezทำงานได้ดี โดยส่วนตัวแล้วฉันพยายามที่จะไม่ใช้ NOT (!) ชั้นนำที่จุดเริ่มต้นของบรรทัด หลายปีต่อมามันจะยากที่จะแก้ไขข้อบกพร่องเมื่อคุณมองข้ามสิ่งนั้นไปและมีตรรกะย้อนกลับ ... คือ (": checked") นั้นชัดเจนมากว่าคุณกำลังทำอะไรอยู่ - คำตอบที่ดีที่สุด
Scott

32

คุณสามารถทำสิ่งนี้:

var radio_buttons = $("input[name='html_elements']");
if( radio_buttons.filter(':checked').length == 0){
  // None checked
} else {
  // If you need to use the result you can do so without
  // another (costly) jQuery selector call:
  var val = radio_buttons.val();
}

2
คุณไม่สามารถ จำกัด สองบรรทัดแรกให้แคบลงได้if ($("input[name='html_elements']:checked").length == 0){หรือ?
Powerlord

7
คุณทำได้ แต่คุณจะต้องมีการเลือก jQuery แบบเต็มอีกครั้งเพื่อรับค่าหากคุณแสดงว่ามีค่าอยู่
Doug Neiner




2

ฉันคิดว่านี่เป็นตัวอย่างง่ายๆวิธีตรวจสอบว่ามีการตรวจสอบวิทยุในกลุ่มวิทยุหรือไม่

if($('input[name=html_elements]:checked').length){
    //a radio button was checked
}else{
    //there was no radio button checked
} 

0

ฉันใช้สิ่งนี้ง่ายมาก

HTML

<label class="radio"><input id="job1" type="radio" name="job" value="1" checked>New Job</label>
<label class="radio"><input id="job2" type="radio" name="job" value="2">Updating Job</label>


<button type="button" class="btn btn-primary" onclick="save();">Save</button>

SCRIPT

 $('#save').on('click', function(e) {
    if (job1.checked)
        {
              alert("New Job"); 
        }
if (job2.checked)
        {
            alert("Updating Job");
        }

}

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.