คลิกหรือเปลี่ยนเหตุการณ์ทางวิทยุโดยใช้ jquery


86

ฉันมีวิทยุอยู่ในหน้าของฉันและฉันต้องการทำบางสิ่งเมื่อวิทยุที่ตรวจสอบเปลี่ยนไปอย่างไรก็ตามรหัสไม่ทำงานใน IE:

$('input:radio').change(...);

และหลังจาก googling ผู้คนแนะนำให้ใช้การคลิกแทน แต่มันไม่ได้ผล

นี่คือรหัสตัวอย่าง:

<html>
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
        <script type="text/javascript">
            $('document').ready(
                function(){
                    $('input:radio').click(
                        function(){
                            alert('changed');   
                        }
                    );  
                }
            );

        </script>
    </head>
    <body>
        <input type="radio" name="testGroup" id="test1" />test1<br/>
        <input type="radio" name="testGroup" id="test2" />test2<br/>
        <input type="radio" name="testGroup" id="test3" />test3</br>
    </body>
</html>

นอกจากนี้ยังไม่ทำงานใน IE

เลยอยากรู้ว่าเป็นไงบ้าง?

นอกจากนี้ฉันยังกลัวว่ามันจะกระตุ้นเหตุการณ์การเปลี่ยนแปลงอีกครั้งหรือไม่ถ้าฉันคลิกวิทยุที่เลือกไว้

อัพเดท:

ฉันไม่สามารถเพิ่มความคิดเห็นได้ดังนั้นฉันจึงตอบกลับที่นี่

ฉันใช้ IE8 และลิงค์ Furqan ให้ฉันยังใช้ไม่ได้ใน IE8 ฉันไม่รู้ว่าทำไม...


1
คุณใช้ IE เวอร์ชันใดในการทดสอบ รหัสของคุณใช้ได้กับฉันใน IE8 คุณคิดถูกที่เหตุการณ์จะทริกเกอร์หากคุณคลิกวิทยุที่เลือกไว้ คุณต้องทำการตรวจสอบรหัสของคุณเพื่อหลีกเลี่ยงปัญหานี้
kgiannakakis

ได้ผลสำหรับฉันตรวจสอบjsfiddle.net/NerXh
Furqan

คำตอบ:


111

รหัสนี้ใช้ได้กับฉัน:

$(function(){

    $('input:radio').change(function(){
        alert('changed');   
    });          

});

http://jsfiddle.net/3q29L/


4
สิ่งนี้ใช้ไม่ได้สำหรับฉันเมื่อมีการกำหนดเป้าหมายวิทยุเครื่องเดียวและการเลือกวิทยุอื่นทำให้วิทยุอื่นยกเลิกการเลือก
Doug Amos

1
ยกเว้นเมื่อประสิทธิภาพเป็นปัญหาในหน้าที่มีองค์ประกอบจำนวนมาก ในกรณีนี้ให้ใช้$('input[type=radio]')แทน (ดู "หมายเหตุเพิ่มเติม": api.jquery.com/radio-selector )
jemmons


16

ได้ผลสำหรับฉันเช่นกันนี่คือทางออกที่ดีกว่า ::

การสาธิตซอ

<form id="myForm">
  <input type="radio" name="radioName" value="1" />one<br />
  <input type="radio" name="radioName" value="2" />two 
</form>

<script>
$('#myForm input[type=radio]').change(function() {       
    alert(this.value);
});
</script>

คุณต้องแน่ใจว่าคุณได้กำหนดค่าเริ่มต้นjqueryเหนือการนำเข้าและฟังก์ชันจาวาสคริปต์อื่น ๆ ทั้งหมด เพราะ$เป็นjqueryฟังก์ชัน แม้

$(function(){
 <code>
}); 

จะไม่ตรวจสอบการjqueryเริ่มต้นหรือไม่ เพื่อให้แน่ใจว่า<code>จะทำงานหลังจากที่จาวาสคริปต์ทั้งหมดถูกเตรียมใช้งานแล้วเท่านั้น



1

$( 'input[name="testGroup"]:radio' ).on('change', function(e) {
     console.log(e.type);
     return false;
});

ไวยากรณ์นี้มีความยืดหยุ่นในการจัดการกับเหตุการณ์เล็กน้อย คุณไม่เพียงสังเกตเห็น "การเปลี่ยนแปลง" เท่านั้น แต่ยังสามารถควบคุมเหตุการณ์ประเภทอื่น ๆ ได้ที่นี่ด้วยโดยใช้ตัวจัดการเหตุการณ์เดียว คุณสามารถทำได้โดยส่งรายการเหตุการณ์เป็นอาร์กิวเมนต์ไปยังพารามิเตอร์ตัวแรก ดู jQuery On

ประการที่สอง. การเปลี่ยนแปลง () เป็นทางลัดสำหรับ. on ("change", handler) ดูที่นี่ . ฉันชอบใช้. on () มากกว่า. เปลี่ยนเพราะฉันควบคุมเหตุการณ์ได้มากกว่า

สุดท้ายนี้ฉันเพียงแค่แสดงไวยากรณ์ทางเลือกเพื่อแนบเหตุการณ์กับองค์ประกอบ


สิ่งนี้แตกต่างจากคำตอบของ Iwao Nishida อย่างไร?
พนักงานทุกคนมีความจำเป็น

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