2011-09-29 20 views
5

Hiện tại trong ứng dụng của tôi, tôi đang có một nút và một hộp văn bản. Người dùng gõ một cái gì đó trong hộp văn bản và sau đó nhấn nút. Điều tôi muốn là:Kích hoạt nút vô hiệu hóa asp .net - sử dụng javascript

Nút tìm kiếm sẽ vẫn bị tắt khi tải trang lần đầu tiên. Tôi có thể đạt được điều đó bằng cách thiết lập nó để vô hiệu hóa trong mã phía sau tập tin.

Bây giờ tôi muốn nó vẫn bị vô hiệu hóa khi người dùng nhập tối đa 2 ký tự. Thời điểm người dùng gõ ký tự thứ ba nút sẽ được kích hoạt tự động.

Điều quan trọng là nó phải được thực hiện mà không cần asp .net AJAX vì trang web này sẽ được chạy từ điện thoại di động cũ. Vì vậy, chỉ javascript hoặc jquery khá cơ bản mới được hỗ trợ.

Mọi trợ giúp sẽ được đánh giá cao.

Cảm ơn

Varun

Trả lời

4

để sử dụng tài liệu.getElementById trong asp.net và không phải sử dụng tên đầy đủ, bạn nên để asp.net cung cấp. Thay vì: document.getElementById("ctl00_ctl00_phContent_phPageContent_btnSearch")

Hãy thử:

document.getElementById('<%= btnName.ClientID %>')

đâu btnNameasp:ButtonId. Mã số <%= sẽ tạo id nút thực tế, đủ điều kiện, do đó bạn không phải lo lắng về những thứ thay đổi với id được mã hóa cứng.

+0

Làm thế nào đến biểu thức là alwas chuỗi chữ trong trường hợp của tôi? Tôi không bao giờ có được giá trị thực tế ... – Lorgarn

3

tôi nhận này để làm việc với một hộp văn bản HTML, tôi không nghĩ rằng bạn có thể làm điều đó với một hộp văn bản asp.net:

<head> 
    <script type="text/javascript"> 
     function TextChange() { 
      var t = document.getElementById("Text1"); 
      var b = document.getElementById("Button1"); 
      if (t.value.length > 2) { 
       b.disabled = false; 
      } 
      else { 
       b.disabled = true; 
      } 


     } 

    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <input id="Text1" type="text" onkeyup="TextChange();" /> 
     <asp:Button ID="Button1" runat="server" Text="Button" Enabled="False" /> 
    </div> 
    </form> 
</body> 
+0

Xin chào, cảm ơn sự giúp đỡ của bạn nhưng tôi đã làm cho nó hoạt động bằng cách sử dụng javascript thuần túy cho các biểu mẫu bình thường. Nhưng kể từ khi hộp văn bản của tôi và nút bên trong asp .net contentplaceholder tôi không thể nhận được nó ID của nút mà tôi muốn sử dụng nó tại thời gian chạy. Tôi buộc phải viết như thế này: document.getElementById ("ctl00_ctl00_phContent_phPageContent_btnSearch"). Disable‌ d = false; thay vì document.getElementById ("btnSearch"). disabled = false; – VVV

1

Nếu bạn đang sử dụng jQuery, sử dụng

$(<selector>).val().length 

để lấy kích thước, sau đó bạn có thể đặt thuộc tính bị tắt của nút với

$(<button selector>).attr('disabled',false). 
+1

Xin chào, cảm ơn sự giúp đỡ của bạn nhưng tôi đã làm cho nó hoạt động bằng cách sử dụng javascript tinh khiết cho các biểu mẫu bình thường. Nhưng kể từ khi hộp văn bản của tôi và nút bên trong asp .net contentplaceholder tôi không thể nhận được nó ID của nút mà tôi muốn sử dụng nó tại thời gian chạy. Tôi buộc phải viết như thế này: document.getElementById ("ctl00_ctl00_phContent_phPageContent_btnSearch"). Disabled = false; thay vì document.getElementById ("btnSearch"). disabled = false; – VVV

+2

Oooh Tôi thấy vấn đề thực sự là gì bây giờ. Bạn có thể truy cập id của một điều khiển bằng cách chèn một số mã đằng sau mã trong asp của bạn bằng cách sử dụng: '<% = btnSearch.ClientID%>' cho nút của bạn được đặt tên btnSearch trong đoạn mã phía sau. Vì vậy, bạn có thể làm điều này với jQuery: '$ (" <% = btnSearch.ClientID%> ")' để lấy đối tượng jQuery của nút của bạn, hoặc bạn có thể làm điều này với js thuần túy: 'document.getElementById (" <% = btnSearch.ClientID%> ")' – kand

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