ใน jQuery ฉันจะรับค่าของปุ่มตัวเลือกได้อย่างไรเมื่อพวกเขาทั้งหมดมีชื่อเดียวกัน


108

นี่คือรหัสของฉัน:

<table>
   <tr>
      <td>Sales Promotion</td>
      <td><input type="radio" name="q12_3" value="1">1</td>
      <td><input type="radio" name="q12_3" value="2">2</td>
      <td><input type="radio" name="q12_3" value="3">3</td>
      <td><input type="radio" name="q12_3" value="4">4</td>
      <td><input type="radio" name="q12_3" value="5">5</td>
   </tr>
</table>
<button id="submit">submit</button>

นี่คือ JS:

$(function(){
    $("#submit").click(function(){      
        alert($('input[name=q12_3]').val());
    });
 });

นี่คือJSFIDDLE ! ทุกครั้งที่คลิกปุ่มมันจะกลับมา 1. ทำไม? ใครสามารถช่วยฉัน?

คำตอบ:


226

ในโค้ดของคุณ jQuery จะมองหาอินสแตนซ์แรกของอินพุตที่มีชื่อq12_3ซึ่งในกรณีนี้จะมีค่าเป็น1. คุณต้องการให้การป้อนข้อมูลที่มีชื่อที่เป็นq12_3:checked

$("#submit").click(() => {
  const val = $('input[name=q12_3]:checked').val();
  alert(val);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<table>
  <tr>
    <td>Sales Promotion</td>
    <td><input type="radio" name="q12_3" value="1">1</td>
    <td><input type="radio" name="q12_3" value="2">2</td>
    <td><input type="radio" name="q12_3" value="3">3</td>
    <td><input type="radio" name="q12_3" value="4">4</td>
    <td><input type="radio" name="q12_3" value="5">5</td>
  </tr>
</table>
<button id="submit">submit</button>

โปรดทราบว่าโค้ดข้างต้นคือไม่.is(":checked")เหมือนกับการใช้ is()ฟังก์ชันของ jQuery ส่งคืนบูลีน (จริงหรือเท็จ) และไม่ใช่ (an) องค์ประกอบ


เนื่องจากคำตอบนี้ได้รับความสนใจเป็นอย่างมากฉันจึงจะใส่ตัวอย่าง JavaScript ของวานิลลาด้วย

document.querySelector("#submit").addEventListener("click", () => {
  const val = document.querySelector("input[name=q12_3]:checked").value;
  alert(val);
});
<table>
  <tr>
    <td>Sales Promotion</td>
    <td><input type="radio" name="q12_3" value="1">1</td>
    <td><input type="radio" name="q12_3" value="2">2</td>
    <td><input type="radio" name="q12_3" value="3">3</td>
    <td><input type="radio" name="q12_3" value="4">4</td>
    <td><input type="radio" name="q12_3" value="5">5</td>
  </tr>
</table>
<button id="submit">submit</button>


16

ในตัวเลือกของคุณคุณควรระบุด้วยว่าคุณต้องการปุ่มเรดิโอที่ตรวจสอบแล้ว:

$(function(){
    $("#submit").click(function(){      
        alert($('input[name=q12_3]:checked').val());
    });
 });

1
ฉันได้รับค่า 'ไม่ได้กำหนด'
Pavan Alapati

@PavanAlapati เราไม่สามารถบอกคุณได้ว่าทำไมถึงไม่เห็น HTML ของคุณด้วย คุณควรโพสต์คำถามใหม่พร้อมกับข้อมูลโค้ด HTML ที่ถูกต้องและรหัสที่คุณใช้ คุณควรจะไม่ได้กำหนดไว้ แต่ถ้า: ชื่อในตัวเลือกไม่ตรงกับชื่อของปุ่มวิทยุ ไม่มีการตรวจสอบปุ่มกดวิทยุใด ๆ หรือปุ่มเรดิโอที่ตรวจสอบแล้วไม่มีค่าที่กำหนด
Dennis


7

นอกจากนี้ยังมีอีกวิธีหนึ่ง ลองใช้โค้ดด้านล่าง

$(document).ready(function(){

      $("input[name='gender']").on("click", function() {
            alert($(this).val());
        });
});



0

ใช้สคริปต์นี้

$('input[name=q12_3]').is(":checked");

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