4 Stimmen

Zeigen Sie das Feld an, wenn die Optionsfeld ausgewählt ist, indem Sie jQuery verwenden

Ich habe den folgenden Code:

        Haben Sie derzeit SolidWorks?

             Ja
             Nein

        Wer ist Ihr SolidWorks-Wiederverkäufer?

             Cad Connect
             Cadtek
             CCSL
             Innova
             NT CAD/CAM
             Solid Engineer
             Solid Solutions Ireland
             Solid Solutions Management
             TMS Scotland

Was ich tun möchte, ist das zweite fieldset standardmäßig auszublenden, und wenn eine Person Ja auswählt, wird das Feld angezeigt, und wenn sie Nein wählt oder Ja nicht ausgewählt ist, wird das Feld wieder ausgeblendet.

Kann mir jemand helfen? Danke.

16voto

Nick Craver Punkte 609016

Sie könnten dies tun:

$("input[name='solidworks']").change(function() {
  $("#boxReseller").toggle(this.value == "Yes");
});
$("input[name='solidworks']:checked").change(); //trigger correct state onload

Sie können es mit dem Markup im Frage hier ausprobieren und die vorab überprüfte "Ja" Version hier ausprobieren.

0 Stimmen

Dies funktioniert großartig, können Sie bitte erklären, wie es funktioniert, da es anscheinend viel verwirrender ist als die Standard- if- und else-Anweisungen, die andere verwendet haben, aber besser funktioniert.

1 Stimmen

@Cameron - Sicher :) Der .toggle(bool) nimmt einen Boolean-Wert an, ob .show() aufgerufen werden soll (wenn true) oder .hide() (wenn false), also prüfen wir nur, ob der Radio-Button, der sich gerade geändert hat, der "Ja"-Button war oder nicht. Die letzte Zeile ruft den ausgewählten Wert ab und führt den Handler darauf aus... wieder, wenn sein Wert "Ja" ist, wird es angezeigt, sonst verbirgt es sich, macht das Sinn?

0 Stimmen

@Nick: eine sehr elegante Lösung, ich werde sie zu meinem Werkzeugkasten hinzufügen! (Wenn du es so machst, kannst du es noch kürzer machen: Entferne die letzte Zeile und schreibe die dritte Zeile um als }).filter(':checked').change();.)

3voto

Praveen Prasad Punkte 30631

Demo

http://jsfiddle.net/Wpt3Y/

jQuery(function(){
        jQuery("input[name=solidworks]").change(function(){          

            if ($(this).val() == "Yes") {
            jQuery("#boxReseller").slideDown()
            }
            else {
            jQuery("#boxReseller").slideUp();
            }                                                            
       });
});

0 Stimmen

Was passiert, wenn ein Benutzer die Seite aktualisiert und das Häkchen bei "Ja" bereits gesetzt ist? Das Kästchen ist ausgeblendet.

0 Stimmen

In diesem Fall müssen Sie den Wert des Radiosenders bei DOM-Bereitschaft überprüfen und Ihre BOX ausblenden/ausblenden.

1voto

Peter Punkte 26

Ref Nick Craver - Schöne Lösung, obwohl sie flexibler ist wie unten

  $("input[name='solidworks']").change(function() {
    $("#boxReseller").toggle();
 });
$("input[name='solidworks']:checked").change(); //trigger correct state onload

Indem ich das Umschalten als Platzhalter (undefiniert, je nachdem, welche Terminologie Sie bevorzugen) belasse, habe ich festgestellt, dass es effizienter funktioniert. Schön trotzdem, danke :)

0 Stimmen

Dies funktioniert nicht effizienter, weil es den "work"-Teil unter vielen Bedingungen nicht passt. Browser-Caching, Klicken vor document.ready, oder Zurück gehen auf derselben Seite kann Ihren Umschalter im gegenteiligen Zustand lassen. Jede dieser drei bricht den Ansatz in dieser Antwort... das ist der Grund, warum ich explizit auf den Wert prüfe.

0voto

Ryan Ternier Punkte 8474

Etwas wie (Entschuldigung, wenn es Tippfehler gibt, mein Kaffee ist noch nicht gemacht):

        Haben Sie derzeit SolidWorks?

             Ja
             Nein

Es gibt Möglichkeiten, das besser aussehen zu lassen, aber mein Kaffee ist noch nicht gemacht. Ich werde es bearbeiten, sobald ich meinen Elixier bekomme.

attr('checked','checked')
     $("#fs:checkbox").click(function(){
              if($("#rdJa:checked").attr('checked','checked'))
              {
                 $("#boxReseller").css('display', 'block'); })
              }          
     });

0 Stimmen

Unnötiger Code: Wenn Sie auf das Nein-Radio klicken, wird das Ja automatisch abgewählt.

0voto

Liam Bailey Punkte 5821
$(document).ready(function() {
    $("input[name=solidworks]").change(function() {
        if ($this).val() == "Ja") {
            $("#boxReseller").slideDown('fast');
        }
        else {
            $("#boxReseller").hide('fast');
        }
    })
})

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X