Die überprüfung einen radio button mit jQuery, wenn radio-button runat="server"?
Mit jQuery ich möchte in der Lage sein, um Sie auf ein element, das auch prüft, hängt es mit dem radio-button. Ich hatte dies wunderbar funktioniert, bis wir hinzufügen musste runat="server" radio-buttons.
Wenn ich diese es verhindert, dass meine jQuery-Funktion von der Arbeit und ich kann nicht herausfinden, wie zu umgehen, hier eine vereinfachte version des Codes:
HTML
<input type="radio" runat="server" id="sector1Radio" name="SectorGroup" title="Sector1" />
jQuery
$('#SomethingElse').click(function() {
$('input[title=Sector1]').attr('checked','checked');
});
Ich habe herausgefunden, dass, wenn Ihr in ein .net-Steuerelement anstelle von checked="checked" (als wäre es in der Regel) ist es gerade Überprüft, also habe ich das geändert, aber bei der Sichtung des DOM in verschiedenen Browsern, keine meiner radio-buttons überprüft werden 🙁
Gibt es andere Wege kann ich jQuery verwenden, um zu überprüfen, radio-button, der hat runat="server"?
Prost!
- Hinzufügen eines runat="server" sollte keinen Einfluss auf den code. Hast du auch dieses Attribut hinzufügen, um die 'Ähnliches' element, als würde es sich wahrscheinlich ändern, die gerendert ID?
- ja, ich glaube nicht, es würde Sie beeinflussen entweder, ich habe nicht Hinzugefügt, die 'Ähnliches', was ist ein Anker-tag ein, wenn das hilft?
- wyane ich habe gerade getestet, die mit dem Attribut runat="server" und es scheint zu funktionieren...sieht aus wie ein Konflikt,sind Sie mit einer anderen javascript-framework, das auf der gleichen Seite?
- genial, einfach nur die Tatsache, dass u got it arbeiten ist eine gute Nachricht! obwohl ich bin nicht mit anderen js-frameworks, ich bin einfach nur starten Sie einen Prozess der Beseitigung, auf dieser, ich lasse ya ' ll wissen, wie es geht. Danke für Sie Hilfe!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass Ihr problem ist, dass die id des input ist nicht mehr sector1Radio sondern ctl00_sector1Radio oder etwas ähnliches. Dies passiert, wenn der input-regler ist im inneren z.B. ein ContentPlaceHolder-Steuerelement (bei Verwendung von master-Seiten).
Können Sie überprüfen Sie die generierten HTML-code (im browser) um zu überprüfen, ob dies der Fall ist? Was ist die id von dem input-regler?
Wenn dies der Fall ist, müssen Sie zum generieren der js-jQuery-code
vom codebehind so, dass Ähnliches ersetzt wird, mit der ClientID der Kontrolle.
.is(':checked') funktioniert auf ASP.NET radiobuttons und Checkboxen
versuchen Sie es mit
und
oder vielleicht
Wie vorgeschlagen, die von anderen, ASP.net nicht generieren des html-Codes mit der gleichen ID, die Sie angegeben.
Schnelle Lösungen:
Können Sie halten mit der id, aber fragt jquery zu überprüfen, das Ende der id statt, Beispiel:
$("input[id$='sector1Radio']").is(":checked");
Oder beim check gegen den Titel und den Namen Nico vorgeschlagen
Verwenden Sie die Klasse element, die ist nicht erfolgt ASP.net Beispiel
<input type="radio" runat="server" id="sector1Radio" class="sector1Radio" name="SectorGroup" title="Sector1" />
$("input.sector1Radio").is(":checked");
Beste ist, anzeigen, um den generierten html-code und sehen, was id zu geben, dann können Sie mit den entsprechenden jquery-Selektor, da die generierte id kann verschiedene Erweiterungen hängt davon ab, ob Sie Masterseiten verwenden, etc.
Wenn Sie mit einer MasterPage oder erstellen Sie die Steuerelemente dynamisch, dann ist es wahrscheinlich, dass die control-ID wird umbenannt, #Ähnliches wird #MainContent_SomethingElse.
Der einfachste Weg, um dies zu überprüfen, ist die Verwendung der WebDeveloper plugin für Firefox oder Chrome.
Gehen Sie zu Informationen -> Anzeige-Element Informationen, und wählen Sie dann das Objekt in Frage. Es wird Sie geben, es ist ID, class, sowie Vorfahren und Kinder Informationen.
Überprüfen, um zu sehen, wenn die ID geändert wird dynamisch durch die .NET.
Wenn das der Fall ist:
Um dies zu verhindern, in der server-side-code können Sie verwenden Sie das folgende Attribut zum erstellen von statischen ID
Können Sie dann darauf verweisen, in der Sie jQuery
Ich denke, was passiert, ist, dass in ASP-NET Checkboxen und Radio-Buttons erzeugt einen "Eingang" und ein "span" - nach der Eingabe. Sie müssen also wählen Sie den Eingang, nur.
Können Sie versuchen:
Hier zwei Dinge: das finden der Steuerung und der Ausführung überprüfen. In ASP.NET Ihre Kontrolle ist die tatsächliche ID und name werden am Ende immer verändert auf der Grundlage der runat="server" Behälter", in denen es erscheint, auch wenn diese Container haben keine Ids.
Gerendert ASP.NET Kontrollen am Ende immer mit dem gleichen Namen wie Sie angefangen haben, so einen tag wie:
können am Ende wird so dargestellt, als
Finden Sie dieses element, auch nach dem Rendern, wenn Sie die "enthält" - Auswahl, in der die syntax von JQuery. So finden Sie dieses element, sobald gerendert, den Sie verwenden könnten:
Dieser syntax finden Sie jede radio-button mit der id enthält "$sector1Radio"
Sobald Sie das element, Sie können aktivieren oder deaktivieren Sie es mit dem folgenden code, welches Sie möchten rufen Sie aus dem click-Ereignis des anderen Elements.
Eine Letzte Sache... wenn Sie wollen einfach nur einen block von text klicken Sie auf die Schaltfläche, wenn gedrückt (wickeln Sie es in einem tag, und legen Sie die AssociatedControlId-Eigenschaft auf den Namen des Steuerelements von Ihrem radio-button, so...
Ich hatte das gleiche problem. Die Verwendung der jQuery UI zu machen, Ihre
radiobuttons
nettes zu schreiben hat:Die id des input-Tags müssen korrekt referenziert werden, indem Sie die Bezeichnung für die Attribut. Wenn die Webseite innerhalb einer master-Seite, dann die id des input-Tags werden geändert, um so etwas wie
ctl00_Something_radio1
, und plötzlich ist die Bezeichnung für die Attribut nicht länger auf den input-tag. Hüten Sie sich vor dieser in ASP.NET!