2011-04-20 18 views
5

Mam następujące pola kontrolne serwera ASP.NET.Zaznacz pole wyboru ASP.NET z jQuery

<asp:checkbox id="chkMonS1" runat="server" /> 
<asp:checkbox id="chkMonS2" runat="server" /> 
<asp:checkbox id="chkAllMon" runat="server" /> 

A także inne pola wyboru.

<asp:checkbox id="chkTueS1" runat="server" /> 
<asp:checkbox id="chkTueS2" runat="server" /> 
<asp:checkbox id="chkAllTue" runat="server" /> 

Więc próbowałem użyć jQuery, aby zaznaczyć wszystkie pola wyboru jak tak ..

<script type="text/javascript"> 
     $('chkAllMon').click(
     function() { 
      $('chkMonS1').attr('checked', true) 
      $('chkMonS2').attr('checked', true) 
     } 
     ) 
    </script> 

Jednak to nie działa. Gdzie poszło nie tak?

Odpowiedz

8

Jeśli używasz programu ASP.NET 4.0 lub nowszego, jest to łatwe do naprawienia.

Po pierwsze potrzebujesz symbolu # w selektorach jQuery, na przykład: $('#chkMonS1'). Ponadto należy ustawić ClientIdMode="Static" w elementach ASP.NET, jak pokazano poniżej. Spowoduje to ustawienie wartości HTML id na tę samą wartość, co w ASP.NET id. Zobacz this article z tego powodu.

<asp:checkbox id="chkAllTue" runat="server" ClientIDMode="Static" />

0

Musisz wybrać hash przez ID:

$('#chkAllMon').click(function() { 
    $('#chkMonS1').attr('checked', true) 
    $('#chkMonS2').attr('checked', true) 
}); 
+0

Który nadal nie działałby w ASP.NET (z powodu konwencji nazewnictwa) –

9

próbujesz użyć identyfikatora po stronie serwera na kliencie. powinno to wyglądać mniej więcej tak:

$('#<%=chkAllMon.ClientID %>').click(
     function() { 
      $('#<%=chkMonS1.ClientID %>').attr('checked', true) 
      $('#<%=chkMonS2.ClientID %>').attr('checked', true) 
     } 

Objaśnienie: Identyfikatory ASP.NET są id widać na serwerze. Kiedy kontrolki ASP.NET są renderowane do html, otrzymują inny identyfikator.

+0

Jak to naprawić? –

+0

witam. zobacz moje zmiany. – SquidScareMe

+0

Dzięki. Widziałem to. :) –

1

identyfikatory dla wyboru będzie zupełnie inny po stronie klienta (ze wszystkimi ich zastępczych itp) więc jQuery nie jest po prostu ich znalezieniem. Istnieje kilka rozwiązań można spróbować:

  1. Jeśli skrypt jest na tej samej stronie można osadzić ClientID użyciu C# tak:

    $('#<%= chkMonS1.ClientId %>').attr("checked", true)

  2. Jeśli skrypt jest osadzony w zewnętrzny plik, a używasz ASP.NET 4.0, możesz zmienić ClientIDMode na "Statyczny" i możesz użyć dokładnych identyfikatorów swoich pól wyboru (więcej informacji tutaj). selektor jQuery do znalezienia danego pola wyboru (ponieważ ID klienta zawsze kończy się z przypisanym ID, pomimo tego, co ASP.NET dodaje na przedzie; to może być niebezpieczne, jeśli używasz tych samych identyfikatorów w różnych pojemnikach nazewnictwa choć):

    $('input[id$='chkMonS1']').attr("checked", true)

1

Jeśli jest to ASP.NET 2.0 to trzeba korzystać z serwera wygenerowany identyfikator:

<script type="text/javascript"> 
    $('#<%=chkAllMon.ClientID%>').click(
    function() { 
     $('#<%=chkMonS1.ClientID%>').attr('checked', true) 
     $('#<%=chkMonS2.ClientID%>').attr('checked', true) 
    } 
    ) 
</script> 

Jeśli to ASP.NET 4.0, to zobacz ChessWiz's answer.

+0

Próbowałem już tak, ale niestety nadal nie działa. –

Powiązane problemy