2013-09-23 25 views
6

Tôi đang xây dựng một chức năng biên tập trên một trang web bằng cách sử dụng một bộ nút jQuery dựa trên các nút radio. Khi tôi tải các mục vào trình soạn thảo, tôi cần phải thiết lập các nút radio được chọn và sau đó, tất nhiên, người dùng có thể thay đổi tùy chọn và nó nhận được lưu vào cơ sở dữ liệu. Khi mục đóng, tôi muốn đặt lại buttonset thành mặc định.Chọn radio có lập trình trong bộ nút jQuery làm cho nó bị hỏng

Vấn đề là khi tôi đặt nút đặt nó hoạt động lần đầu tiên tôi chọn từng mục thì nó sẽ bị hỏng và ngừng hoạt động cùng nhau.

Demo của vấn đề: http://jsfiddle.net/kallsbo/vSmjb/

HTML:

<div id="dumpSec"> 
    <input type="radio" name="security" id="r_public" value="public" class="rSec"> 
    <label for="r_public"><i class="icon-globe"></i> Public</label> 
    <input type="radio" name="security" id="r_private" value="private" class="rSec"> 
    <label for="r_private"><i class="icon-lock"></i> Private</label> 
    <input type="radio" name="security" id="r_link" value="link" class="rSec"> 
    <label for="r_link"><i class="icon-link"></i> Anyone with the link</label> 
</div> 
<div> 
    If you use the buttons below you can programmatically select each of the radios in the buttonset once before it all breaks down... 
</div> 
<div> 
    <button id="nbr1">Select Private</button><br/> 
    <button id="nbr2">Select Link</button><br/> 
    <button id="nbr3">Select Public</button><br/> 
</div> 

JavaScript:

// Basic function 
$("#dumpSec").buttonset(); 
$("#r_public").attr("checked", true); 
$("#dumpSec").buttonset('refresh'); 

// Put in functions on the demo buttons 
$("#nbr1") 
    .button() 
    .click(function(event) { 
    $("#r_private").attr("checked", true); 
    $("#dumpSec").buttonset('refresh'); 
    }); 

$("#nbr2") 
    .button() 
    .click(function(event) { 
    $("#r_link").attr("checked", true); 
    $("#dumpSec").buttonset('refresh'); 
    }); 

$("#nbr3") 
    .button() 
    .click(function(event) { 
    $("#r_public").attr("checked", true); 
    $("#dumpSec").buttonset('refresh'); 
    }); 

Tôi đã thử một số thứ như cố gắng để kích hoạt chức năng nhấp chuột của nhãn cho mỗi nút radio và vân vân nhưng tôi không thể tìm thấy bất cứ thứ gì hoạt động. Bất kỳ đầu vào được đánh giá cao!

Trả lời

24

Bạn cần phải sử dụng .prop() thay vì .attr() để thiết lập tình trạng kiểm tra

$("#r_link").prop("checked", true); 

Demo: Fiddle

đọc: Attributes vs Properties

+0

Cảm ơn bạn rất nhiều về giải pháp và liên kết đến tài liệu tại sao! –

1

http://jsfiddle.net/vSmjb/2/

bạn có thể kích hoạt click(), để làm nó hoạt động

$("#r_private").click() 
+0

Cảm ơn bạn đã trả lời! Điều này hoạt động đẹp! Làm thế nào bao giờ Aruns giải pháp có vẻ là một trong những thực hành tốt nhất ... –

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