javascript jquery nút radio


89

Tôi có 2 nút radio và jquery đang chạy.

<input type="radio" name="lom" value="1" checked> first
<input type="radio" name="lom" value="2"> second

Bây giờ, với một nút, tôi có thể đặt onClick để chạy một chức năng. Cách làm cho các nút radio chạy một chức năng khi tôi nhấp vào một trong số chúng là gì?


4
Ghi chú. Tốt nhất là không để các phần tử biểu mẫu phản hồi khi nhấp chuột, vì nhiều người điều hướng biểu mẫu bằng bàn phím.
siêu thường

Câu trả lời:


166

Bạn có thể sử dụng .changecho những gì bạn muốn

$("input[@name='lom']").change(function(){
    // Do something interesting here
});

kể từ jQuery 1.3

bạn không cần ký tự '@' nữa. Cách chọn đúng là:

$("input[name='lom']")

7
Lưu ý rằng kể từ jQuery 1.3, bạn không cần ký tự '@' nữa. Cách chính xác để chọn là:$("input[name='lom']")
lubar

4
Có thể tích hợp giải pháp này với giải pháp của @JohnIdol bên dưới với các câu lệnh điều kiện dựa trên các giá trị vô tuyến không? ex$("input[name='lom']").change(function(){ if ($(this).val() === '1') {..... // rest conditional statements based on values here } ;
LazerSharks

Kể từ jQuery 1.3, bạn không nên sử dụng '@' với thuộc tính name. Nếu bạn làm như vậy, bạn sẽ gặp jquery.self-0a6570c….js?body=1:1464 Uncaught Error: Syntax error, unrecognized expressionlỗi. Vì vậy, nó không phải là vấn đề của sự lựa chọn.
Fearguy

53

Nếu bạn có bộ đàm trong vùng chứa có id = radioButtonContainerId, bạn vẫn có thể sử dụng onClick, sau đó kiểm tra xem đài nào được chọn và chạy một số chức năng theo đó:

$('#radioButtonContainerId input:radio').click(function() {
    if ($(this).val() === '1') {
      myFunction();
    } else if ($(this).val() === '2') {
      myOtherFunction();
    } 
  });

Cảm ơn bạn. Điều này phù hợp với tôi vì trường của tôi là một phần của một mảng và tôi không thể sử dụng ký hiệu đầu vào [name = 'xxx'] - <input type = "radio" name = "Need [Measure_type]" id = "Need_measure_type" value = "aaa">
crafter

Điều này có phản ứng ngay cả khi bạn tab xuống và di chuyển điểm đánh dấu bằng các phím mũi tên không?
Alisso

điều này sẽ không hoạt động trong điện thoại di động # selector không hoạt động trong điện thoại di động.
zawhtut

19
<input type="radio" name="radio" value="creditcard" />
<input type="radio" name="radio" value="cash"/>
<input type="radio" name="radio" value="cheque"/>
<input type="radio" name="radio" value="instore"/>

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

1
Mặc dù câu trả lời này không chỉ ra cách kết nối mã với sự kiện, nhưng tôi thích nó chứa thông tin về cách truy xuất giá trị của nhóm nút radio.
Manfred

1
$ ("input [@ name = 'lom']"). change (function () {// Làm điều gì đó thú vị ở đây});
Bishoy Hanna

11

điều này nên được tốt

$(document).ready(function() {
    $('input:radio').change(function() {
       alert('ole');
    });
});

Bạn đã bỏ lỡ a); ở phía sau.
Biswas Khayargoli

8

Có nhiều hướng khác nhau để làm điều đó. Bất kể bạn nên có một vùng chứa xung quanh các nút radio, nhưng bạn cũng có thể đặt một lớp trực tiếp trên các nút. Với HTML này:

<ul id="shapeList" class="radioList">
<li><label>Shape:</label></li>
<li><input id="shapeList_0" class="shapeButton" type="radio" value="Circular" name="shapeList" /><label for="shapeList_0">Circular</label></li>
<li><input id="shapeList_1" class="shapeButton" type="radio" value="Rectangular" name="shapeList" /><label for="shapeList_1">Rectangular</label></li>
</ul>

bạn có thể chọn theo lớp:

$(".shapeButton").click(SetShape);

hoặc chọn theo ID vùng chứa:

$("#shapeList").click(SetShape);

Trong cả hai trường hợp, sự kiện sẽ kích hoạt khi nhấp vào nút radio hoặc nhãn cho nó, mặc dù kỳ lạ trong trường hợp sau (Chọn theo "#shapeList"), nhấp vào nhãn sẽ kích hoạt chức năng nhấp hai lần vì một số lý do, tại ít nhất trong FireFox; chọn theo lớp sẽ không làm điều đó.

SetShape là một hàm và có dạng như sau:

function SetShape() {
    var Shape = $('.shapeButton:checked').val();
//dostuff
}

Bằng cách này, bạn có thể có nhãn trên các nút của mình và có thể có nhiều danh sách nút radio trên cùng một trang thực hiện những việc khác nhau. Bạn thậm chí có thể để từng nút riêng lẻ trong cùng một danh sách làm những việc khác nhau bằng cách thiết lập hành vi khác nhau trong SetShape () dựa trên giá trị của nút.


3

luôn luôn tốt để hạn chế tìm kiếm DOM. vì vậy tốt hơn nên sử dụng cả tệp gốc, để toàn bộ DOM sẽ không bị chuyển qua.

NÓ RẤT NHANH

<div id="radioBtnDiv">
  <input name="myButton" type="radio" class="radioClass" value="manual" checked="checked"/>
 <input name="myButton" type="radio" class="radioClass" value="auto" checked="checked"/>
</div>



 $("input[name='myButton']",$('#radioBtnDiv')).change(
    function(e)
    {
        // your stuffs go here
    });
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.