2012-01-25 54 views
10

Tôi có một biến được gọi là category phải thay đổi giá trị của nó theo nút radio đã chọn. Vấn đề là tôi không nhận được điều đó khi nhấp vào nút radio hoặc nút khác, giá trị sẽ thay đổi ngay lập tức.Giá trị thay đổi JQuery từ nút radio

Đây là mã tôi có:

<form> 
<input type="radio" name="category" value="doctor" /> Doctor 
<input type="radio" name="category" value="police" checked /> Policia 
</form> 

var category = $('[name="category"]:checked').val(); 

tôi cần bạn tự động thay đổi giá trị của biến category khi bạn nhấp vào nút radio.

Trả lời

13

Bạn cần thay đổi giá trị của mục mỗi khi người dùng thay đổi các nút radio được chọn. Vì vậy, bạn sẽ cần một sự kiện để kích hoạt khi người dùng nhấp vào một đài phát thanh. Bạn có thể kiểm tra FIDDLE

var category = null; 
$("input[name='category']").click(function() { 
    category = this.value; 
}); 
1

tôi nghĩ rằng bạn cần chỉ đơn giản là một cái gì đó như thế này:

var category; 

    $('radio[name="category"]').click(function(){ 
     category=this.value; 
    }); 
+0

Tôi nghĩ tốt hơn nên sử dụng sự kiện "thay đổi", mục đích chung hơn là "nhấp". – T30

1

Thay vì sử dụng category biến sử dụng $('[name="category"]:checked').val() bất cứ nơi nào bạn muốn giá trị của nút radio kiểm tra. Nếu không, bạn có thể sử dụng sự kiện change hoặc click để đặt giá trị nút radio checked thành category biến.

+0

Đây là một cách tiếp cận trực tiếp hơn là thực hiện sự kiện 'thay đổi'. – Peter

34

Đính kèm một event handler cho sự kiện change:

$(':radio[name="category"]').change(function() { 
    var category = $(this).filter(':checked').val(); 
}); 
+3

Bạn muốn sử dụng sự kiện 'thay đổi' như câu trả lời này, không phải là' nhấp chuột' mà một số người khác đang tư vấn. Sử dụng 'thay đổi' đảm bảo bạn cập nhật giá trị của mình ngay cả khi người dùng điều hướng và chọn nút radio bằng bàn phím của họ. – idrumgood

+0

câu hỏi rõ ràng là "onclick", không thay đổi – albanx

+2

@albanx: 'click' sẽ chỉ kích hoạt nếu nút được nhấp (ngay cả khi nút đó bị tắt). 'change' cháy khi giá trị được thay đổi (bất kể phương thức, có thể là bàn phím hoặc chuột), điều này không thể xảy ra nếu nó bị tắt. – Blender

0

sử dụng các .change() để nắm bắt sự kiện thay đổi cho một nút radio.

1
var category; 
    $(':radio[name="category"]').change(function() { 
     category=this.value; 
    }); 

Và đây là bản trình bày jsfiddle.net.

1

Bạn không nên cung cấp cho cùng một ID cho nhiều hơn một phần tử, bạn nên sử dụng lớp thay vì như thế này:

<form> 
    Option 1<input type="radio" name="opt" class="radio" value="Option 1"> 
    Option 2<input type="radio" name="opt" class="radio" value="Option 2"> 
</form> 

thay vì:

<form> 
    Option 1<input type="radio" name="opt" id="radio" value="Option 1"> 
    Option 2<input type="radio" name="opt" id="radio" value="Option 2"> 
</form> 

và mã của bạn vẫn như nhau và nó sẽ hoạt động tốt :)

Các vấn đề liên quan