2009-08-13 25 views
13

Tôi vừa mới bắt đầu sử dụng JQuery trong VS 2008 và cho đến bây giờ tôi thích nó! Nhưng, tôi đang bối rối về cách tôi nên sử dụng JQuery để chọn điều khiển asp.net trên một trang web.Chọn thuộc tính ID bằng cách sử dụng JQuery trong ASP.NET

Ví dụ, tôi có đoạn mã sau (chỉ là một bản mock-up):

<asp:textbox id="txtSomeData1" runat="server" text="Some Data!!"></textbox> 

Bây giờ, nếu tôi muốn sử dụng JQuery để chọn hộp văn bản và thay đổi nó là văn bản để "Một số dữ liệu khác !! ", sau đó tôi sẽ phải làm một cái gì đó như:

$('input#ctl00_ContentPlaceHolder1_txtSomeData1').val('Some More Data!!'); 

trong đó, khá thẳng thắn, là gây phiền nhiễu bởi vì tôi không muốn gây rối với việc phải tìm ra những gì id của sự kiểm soát là sau khi nó được trả lại cho trang web (ctl00_ContextPlaceHolder ... blah blah blah).

Có cách nào để tôi có thể chọn hộp văn bản mà không phải sử dụng id của nó không? Ngoài ra, tôi biết rằng bạn có thể chọn theo tên lớp, nhưng điều đó không giúp được gì nhiều nếu điều khiển bạn chọn không có lớp.

Tôi chỉ thiếu một thứ gì đó ở đây?

CHỈ ĐỂ REITERATE: Tôi không muốn sử dụng lớp học để chọn thẻ đầu vào !! Tôi muốn sử dụng id "txtSomeData1" và không phải là id dài được hiển thị cho trang web.

+0

Nếu bạn phải thay đổi ID của phần tử trong trang được tạo, bạn phải thay đổi đầu ra ở phía bên cạnh. Vì vậy, đây là một câu hỏi ASP hơn là một câu hỏi jquery. – airportyh

+0

Thực hiện chỉnh sửa cho tiêu đề phù hợp. – Jagd

Trả lời

14

Những gì bạn muốn làm là một trong hai:

$("input[id$='_txtSomeData1']").val()..... 

hoặc bạn có thể thêm một lớp hoặc tùy chỉnh thuộc tính cho hộp mà bạn có thể chọn trên

+0

nice one jaimedp. +1 –

+0

Tôi không thể làm việc này, nhưng tôi nghĩ đó là những gì tôi đang tìm kiếm! Tuy nhiên, tôi chưa thử thuộc tính tùy chỉnh. Có phải $ = một ký tự đại diện không? – Jagd

+0

Đây chính xác là những gì tôi đã thử: $ ("input [id $ = '_ txtSomeData1'"). Val ('Some More Data !!'); – Jagd

1

Đây là một lời phàn nàn lớn cộng đồng có với ASP .Net biểu mẫu web. Trong ASP.Net 4.0 bạn có thể kiểm soát ID của bạn trở lại để nó giống như bạn đã viết nó trong HTML thô. Ngoài ra, không có .Net 4.0, bạn có thể sử dụng ASP.Net MVC mà, đối với hầu hết các phần, không sử dụng điều khiển máy chủ, vì vậy bạn sẽ không có vấn đề.

Nhưng cũng giống như lúc bấy giờ, bạn có thể thêm một lớp học nếu bạn đang làm việc với biểu mẫu web và jquery.

+0

Tuyệt vời! Tôi không biết rằng 4,0 sẽ không có id gây phiền nhiễu để vít xung quanh với. Đó là tin tốt. – Jagd

0

Bạn có thể thêm các lớp 'đánh dấu' vào bất kỳ điều khiển nào có mục đích duy nhất được sử dụng trong bộ chọn jQuery. đó, cùng với việc điều hướng hệ thống cấp bậc cây (giống như "$(element).children('.myClass').show()" có thể là một cách tốt để làm điều này mà không cần ID.

Btw, http://visualjquery.com/ là một cách tuyệt vời để xem các API jQuery, vv

+0

VisualJquery thật tuyệt vời. Nếu họ chỉ cập nhật nó lên phiên bản hiện tại đã được sử dụng trong 6 tháng nay ... – phairoh

0

Bạn có thể sử dụng Ký hiệu [id $ = Identifier], tìm kiếm id kết thúc bằng văn bản bạn chỉ định (đó là ID bạn chỉ định trong đánh dấu ASPX). Dưới đây là ví dụ minh hoạ cách bạn có thể sử dụng nó (xem slide # 30): Building intranet applications with ASP.NET AJAX and jQuery.

7

nếu javascript là giống nhau.file aspx, bạn có thể làm:

$('<%= txtSomeData1.ClientID %>').val('Some More Data!!'); 
+0

javascript nằm trong tập tin riêng của nó (tức là - không gây khó chịu). Nhưng như tôi đã nói với Vdex, nó là một giải pháp rất hấp dẫn và dễ sử dụng; tuy nhiên, không phải cái tôi đang tìm kiếm. – Jagd

+0

Thực ra, đây sẽ là $ ('# <% = txtSomeData1.ClientID%>'). Val ('Một số dữ liệu khác !!'); (lưu ý dấu # - đây là điều mà đôi khi tôi quên bản thân mình) –

+1

một kỹ thuật mà tôi đã sử dụng là ánh xạ các thành phần màn hình vào các đối tượng javascript; trên tệp .aspx bạn có thể thực hiện ánh xạ (phần tử id đến thuộc tính), sau đó bạn có thể sử dụng các đối tượng đó trên các tệp .js – BlackTigerX

1

Nếu bạn đang đi để externalise các hoạt Javascript để .js riêng của mình tập tin bạn đang bị mắc kẹt với một trong hai mã hóa cứng trong id (hiệu quả nhất), một số chọn biểu thức chính quy hoặc sử dụng không hiệu quả bằng công cụ chọn tên lớp.

Tuy nhiên nếu nó đang ở trong cùng một tập tin như kiểm soát NET bạn luôn có thể sử dụng $('<%=txtSomeData1.ClientID %>')

+0

Tôi có javascript trong tệp js và tôi có thể sẽ giữ nó theo cách đó, nhưng Tôi phải thừa nhận rằng giải pháp của bạn có một số khiếu nại đối với nó. – Jagd

0

Vui lòng sử dụng cú pháp sau: $ ("[id * = txtSomeData1]") để tham khảo bất kỳ kiểm soát asp

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