2009-02-27 14 views
6

Cách chính xác để có được một điều khiển được render bởi ASP.NET với jQuery là gì?Tên jQuery và ASP.NET

Ví dụ: Tôi có một hộp kiểm đã được tạo như thế này:

<input id="ctl00_Content_chkOk" type="checkbox" name="ctl00$Content$chkOk" /> 

Nếu tôi muốn chọn nó để có được nếu nó được kiểm tra, tôi đã cố gắng này:

$('form input[name=chkOk]').attr("checked") 

$('chkOk').attr("checked") 

Nhưng nó không hoạt động, tôi phải làm như thế này

$('form input[name=ctl00$Content$chkOk]').attr("checked") 

Và tôi đoán đây sẽ đã làm việc quá:

$('ctl00$Content$chkOk').attr("checked") 

Đây có phải là cách chính xác để làm điều đó? Có một bộ chọn khác mà tôi có thể sử dụng không?

Trả lời

12

Bạn có thể sử dụng máy chủ kiểm soát bên ClientID tài sản:

var isChecked = $('#<%=YourCheckBox.ClientID%>').attr("checked"); 

hoặc bạn có thể sử dụng "kết thúc với" selector: attribute$=value

var isChecked = $('form input[name$=chkOk]').attr("checked"); 
0
$('#ctl00_Content_chkOk').attr('checked'); 
$('form #ctl00_Content_chkOk').attr('checked'); 
$('form input#ctl00_Content_chkOk').attr('checked'); 
$('form input#ctl00_Content_chkOk[type="checkbox"]').attr('checked'); 

Chọn một;)

0

Yeah, JQuery chỉ quan tâm đến những gì đang hiển thị trên trang, cho dù thông qua công cụ ASP.NET hoặc thông qua HTML đơn giản, vì vậy bạn sẽ phải truy cập vào nó thông qua id hoặc tên. Hai phiên bản dưới cùng bạn đã sử dụng sẽ hoạt động tốt như $ ('# ct100_Content_chk0k'). Attr ("checked").

Adam

1

tôi luôn luôn sử dụng ký hiệu này

$('#ctl00_Content_chkOk:checked').length; // will evaluate as true when checked 
1

Bạn có thể làm

$ ("đầu vào [id * = _ chkOk]"). Attr ('checked');

0

Tôi có xu hướng đi qua lại giữa hai cách. Tôi hoặc sử dụng tài sản clientID của control như đã đề cập bởi CMS, hoặc tôi tạo mã javascript trong mã của tôi phía sau và sử dụng trang của ClientScriptManager để viết nó vào trình duyệt.