2011-09-29 15 views
5

Obecnie w mojej aplikacji mam przycisk i pole tekstowe. Użytkownik wpisuje coś w polu tekstowym, a następnie naciska przycisk. Chcę, aby:Włączanie przycisku Wyłączanie asp .net - przy użyciu javascript

Przycisk wyszukiwania powinien pozostać wyłączony, gdy strona ładuje się po raz pierwszy. Mogę to osiągnąć, ustawiając go na wyłączony w kodzie znajdującym się za plikiem.

Teraz chcę, aby pozostała wyłączona, gdy użytkownik wpisze do 2 znaków. W momencie, gdy użytkownik wpisze trzeci znak, przycisk powinien zostać automatycznie włączony.

Ważne jest, aby to zrobić bez asp .net AJAX, ponieważ ta strona będzie działała ze starych telefonów komórkowych. Dlatego obsługiwany jest tylko ładny podstawowy javascript lub jquery.

Każda pomoc zostanie doceniona.

Dzięki

Varun

Odpowiedz

4

w celu użycia document.getElementById w asp.net i nie trzeba używać pełnej nazwy, powinieneś pozwolić asp.netowi go dostarczyć. Zamiast: document.getElementById("ctl00_ctl00_phContent_phPageContent_btnSearch")

Spróbuj:

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

Gdzie btnName jest asp:ButtonId. Kod <%= wygeneruje rzeczywisty identyfikator przycisku, w pełni kwalifikowany, dzięki czemu nie musisz się martwić o rzeczy zmieniające się z identyfikatorem o zakodowanym kodzie.

+0

Dlaczego to wyrażenie jest literalnym łańcuchem w moim przypadku? Nigdy nie otrzymuję rzeczywistej wartości ... – Lorgarn

3

Dostałem to do pracy z pola tekstowego HTML, nie sądzę, można to zrobić z pola tekstowego 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

Witam, dziękuję za pomoc, ale mam ją do pracy przy użyciu czystego javascript dla normalnych form. Ale ponieważ moje pole tekstowe i przycisk znajdują się wewnątrz pliku asp.net contentplaceholder, nie mogę uzyskać identyfikatora przycisku, który chcę użyć w środowisku wykonawczym. Jestem zmuszony napisać tak: document.getElementById ("ctl00_ctl00_phContent_phPageContent_btnSearch"). Disable d = false; zamiast document.getElementById ("btnSearch"). disabled = false; – VVV

1

Jeśli używasz jQuery, użyj , aby uzyskać rozmiar, możesz ustawić wyłączony atrybut przycisku za pomocą

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

Cześć, dziękuję za pomoc, ale mam to do pracy przy użyciu czystego javascript dla normalnych form. Ale ponieważ moje pole tekstowe i przycisk znajdują się wewnątrz pliku asp.net contentplaceholder, nie mogę uzyskać identyfikatora przycisku, który chcę użyć w środowisku wykonawczym. Jestem zmuszony napisać tak: document.getElementById ("ctl00_ctl00_phContent_phPageContent_btnSearch"). Disabled = false; zamiast document.getElementById ("btnSearch"). disabled = false; – VVV

+2

Oooh Widzę, co jest teraz prawdziwym problemem. Możesz uzyskać dostęp do identyfikatora kontrolki, wstawiając kod za kodem w asp, używając: '<% = btnSearch.ClientID%>' biorąc pod uwagę, że Twój przycisk ma w nazwie kod btnSearch. Tak, możesz zrobić to za pomocą jQuery: '$ (" <% = btnSearch.ClientID%> ")', aby uzyskać obiekt jQuery twojego przycisku, lub możesz to zrobić z czystym js: 'document.getElementById (" <% = btnSearch.ClientID%> ")' – kand

Powiązane problemy