Ich habe ein jQuery-Dialogfeld, in dem der Benutzer bestimmte Informationen eingeben muss. In diesem Formular habe ich einen "Weiter" -Button. Ich möchte, dass diese Schaltfläche "Weiter" erst aktiviert wird, wenn alle Felder Inhalt enthalten. Andernfalls bleibt sie deaktiviert.
Ich habe eine Funktion geschrieben, die jedes Mal aufgerufen wird, wenn sich ein Feldstatus geändert hat. Ich weiß jedoch nicht, wie ich die Dialogschaltfläche über diese Funktion aktivieren und deaktivieren kann. Was soll ich machen?
Hoppla und ich haben vergessen zu erwähnen, dass diese Schaltflächen wie folgt erstellt wurden:
$(function() {
$("#dialog").dialog({
bgiframe: true,
height: 'auto',
width: 700,
show: 'clip',
hide: 'clip',
modal: true,
buttons: {
'Add to request list': function() {
$(this).dialog('close');
$('form').submit();
},
'Cancel': function() {
$(this).dialog('close');
}
}
})
});
Antworten:
Sie möchten die deaktivierte Eigenschaft festlegen
Update : Ahha, ich sehe jetzt die Komplexität. Der jQuery-Dialog hatte eine einzelne Zeile, die von Nutzen sein wird (unter dem Abschnitt "Schaltflächen").
Sie müssen die Schaltflächensammlung aus dem Dialogfeld abrufen, diese durchlaufen, um herauszufinden, welche Sie benötigen, und dann das deaktivierte Attribut wie oben gezeigt festlegen.
quelle
.prop('disabled', true)
wird in jQuery 1.6+Es ist sehr einfach:
quelle
.prop('disabled', true)
wird in jQuery 1.6+Sie sind damit fertig, eine einfache Aufgabe zu komplizieren. Das jQueryUI-Dialogfeld bietet zwei Möglichkeiten, Schaltflächen aus einem bestimmten Grund festzulegen.
Wenn Sie nur den Klick-Handler für jede Schaltfläche festlegen müssen, verwenden Sie die Option, die ein
Object
Argument akzeptiert. Verwenden Sie zum Deaktivieren von Schaltflächen und zum Bereitstellen anderer Attribute die Option, die einArray
Argument akzeptiert.Im folgenden Beispiel wird eine Schaltfläche deaktiviert und ihr Status wird korrekt aktualisiert, indem alle jQueryUI-CSS-Klassen und -Attribute angewendet werden.
Schritt 1 - Erstellen Sie Ihren Dialog mit einer
Array
der Schaltflächen:Schritt 2 - Aktivieren / Deaktivieren Sie die Schaltfläche Fertig, nachdem der Dialog erstellt wurde:
quelle
each
Schleife ist unnötig. Geben Sie einclass
Attribut imbuttons
Array an, und Sie können dieses verwenden, um das richtige Element zu finden.Wenn Sie ein Dialogfeld mit IDs für die Schaltflächen erstellen,
Wir können die Schaltfläche mit dem folgenden Code deaktivieren:
quelle
Ich wollte die Schaltfläche nach Namen suchen können (da ich in meinem jQuery-UI-Dialogfeld mehrere Schaltflächen habe). Ich habe auch mehrere Dialoge auf der Seite, daher brauche ich eine Möglichkeit, die Schaltflächen eines bestimmten Dialogfelds abzurufen. Hier ist meine Funktion:
quelle
Dies deaktiviert eine Schaltfläche:
Sie müssen die Dialog-ID hinzufügen, wenn Sie mehrere Dialoge auf einer Seite haben.
quelle
Hier ist das Beispiel aus der Frage, die geändert wurde, um die Schaltfläche nach dem Klicken zu deaktivieren:
Die folgende Frage ist auch hilfreich: Wie kann ich eine Schaltfläche in einem jQuery-UI-Dialogfeld deaktivieren?
quelle
Ich habe eine einfache Möglichkeit gefunden, eine Dialogschaltfläche zu deaktivieren (oder eine andere Aktion auszuführen).
Sie wählen einfach das übergeordnete Element Ihres Dialogfelds aus und finden alle Schaltflächen. Wenn Sie dann den Text Ihrer Schaltfläche überprüfen, können Sie Ihre Schaltflächen identifizieren.
quelle
Ich habe dies mit der Methode arbeiten lassen,
.dialog("widget")
die den Dialog DIV selbst zurückgibt. Wenn Sie in den Dialogmethoden sind:quelle
Aus Sicht der Benutzerfreundlichkeit ist es normalerweise besser, die Schaltfläche aktiviert zu lassen, aber eine Fehlermeldung anzuzeigen, wenn jemand versucht, ein unvollständiges Formular zu senden. Es macht mich verrückt, wenn die Schaltfläche, auf die ich klicken möchte, deaktiviert ist und es keinen Hinweis darauf gibt, warum.
quelle
Versuche dies:
quelle
Hier ist meine enableOk-Funktion für einen jQuery-Dialog:
Der "erste" Knopf befindet sich am weitesten rechts. Sie deaktivieren beide die Schaltfläche und legen die deaktivierte Klasse des Dialogfelds fest, um den richtigen visuellen Effekt zu erzielen.
quelle
In der alten jQuery-Benutzeroberfläche (Version 1.7.3) konnte ich einfach verwenden
um einfach die Schaltfläche am DOM-Element selbst zu deaktivieren. Nachdem wir auf die neuere jQuery-Benutzeroberfläche (Version 1.8.7) aktualisiert haben, funktioniert diese Methode in Firefox nicht mehr. Ich kann jedoch einfach die Schaltfläche zum Deaktivieren und Aktivieren der Funktionen für die Schaltflächen-jquery-Objekte aufrufen.
quelle
haha, habe gerade eine interessante Methode gefunden, um auf die Bottons zuzugreifen
Es scheint, dass Sie alle nicht wissen, dass die Argumente ein Ereignisobjekt enthalten ...
Übrigens greift es nur über den Rückruf auf die Schaltfläche zu. Im Allgemeinen ist es gut, eine ID für den Zugriff hinzuzufügen
quelle
Wenn Sie eine Schaltfläche wirklich deaktivieren möchten, müssen Sie auch die Methode .unbind () aufrufen. Andernfalls ist die Schaltfläche möglicherweise noch aktiv und ein Doppelklick kann zu mehreren Formularübermittlungen führen. Der folgende Code funktioniert für mich:
quelle
Ich habe eine Problemumgehung gefunden, die möglicherweise für Personen gilt, die versuchen, etwas Ähnliches zu tun. Anstatt die Schaltfläche zu deaktivieren, habe ich eine einfache
if
Anweisung in die Funktion eingefügt, um zu überprüfen, ob das Kontrollkästchen aktiviert wurde.Wenn dies nicht der Fall war, wurde eine einfache Meldung angezeigt, dass das Kontrollkästchen vor der Übermittlung aktiviert werden musste.
Beispielsweise:
Jedenfalls hoffe ich, dass das jemandem hilft.
quelle
Ich habe eine jQuery-Funktion erstellt, um diese Aufgabe etwas zu vereinfachen. Fügen Sie dies einfach Ihrer JavaScript-Datei hinzu:
Deaktivieren Sie die Schaltfläche 'OK' im Dialog mit der Klasse 'Dialog':
Alle Schaltflächen aktivieren:
Aktivieren Sie die Schaltfläche "Schließen" und ändern Sie die Farbe:
Ich hoffe das hilft.
quelle
Leider funktionierten keine Lösungen von hier für mehrere Dialoge auf der Seite.
Das Problem war auch, dass das ursprüngliche Dialogfeld keinen Schaltflächenbereich an sich enthält, sondern ein Geschwister davon ist.
Also habe ich mir folgende Auswahl per Dialog-ID ausgedacht:
...
...
und dann könnte dieselbe Funktion getFirstDialogButton () später verwendet werden, um die Schaltfläche zu aktivieren, z. B. nach erfolgreicher Validierung.
Hoffe es kann jemandem helfen.
quelle
Hier ist ein Beispiel, das ich gerade mithilfe der Array-Methode zum Zuweisen von Schaltflächen implementiert habe, mit der ich später - genau wie in der ursprünglich angegebenen Antwort angegeben - ID-Selektoren verwenden kann, um Schaltflächen zu aktivieren / deaktivieren und sie sogar vollständig so anzuzeigen / auszublenden, wie ich bin tun.
Nach erfolgreicher Übermittlung deaktiviere und verstecke ich zwei der Schaltflächen und aktiviere die OK-Schaltfläche, die standardmäßig deaktiviert war.
Hoffe das hilft.
quelle
Ich habe eine ähnliche Funktion wie Nick erstellt, aber für meine Methode muss die dialogClass nicht festgelegt werden, und Sie können die Schaltflächen eines bestimmten Dialogfelds über die ID abrufen (falls in Ihrer Anwendung mehr als eine vorhanden ist).
Wenn Sie den Dialog also wie folgt erstellt haben:
Sie können die Schaltflächen folgendermaßen abrufen:
Etwas deaktivieren:
Ermöglichen:
quelle
Nur zur Veranschaulichung, dieser Beitrag hat mir geholfen, mein Problem zu lösen. In kurzen Worten, Sie müssen das Attribut disabled auf disabled und nicht auf false setzen:
So sieht der gesamte Code aus. Ich habe auch einige Stile hinzugefügt, damit er deaktiviert aussieht:
quelle
Ich denke, es sollte mit allen funktionieren,
quelle
Um die Schaltfläche Speichern in meinem Dialogfeld zu deaktivieren, verwenden Sie die folgende Zeile in Ihrer Funktion.
Um einen Text in einer Schaltfläche zu ändern, verwenden Sie die folgende Zeile (dies ändert den Text der Schaltfläche zum Abbrechen in Schließen).
quelle
@Chris Sie können die folgenden Codezeilen verwenden, um Dialogschaltflächen zu aktivieren / deaktivieren, bis Ihr Kontrollkästchen aktiviert / deaktiviert ist
Originalquelle: http://jsfiddle.net/nick_craver/rxZPv/1/
quelle
Das Aufrufen
.attr("disabled", true)
funktioniert natürlich, aber wenn Sie jQuery verwenden, möchten Sie es auf eine Art "Zucker" machen, also habe ich eine einfache Erweiterung geschrieben:Jetzt haben Sie Funktionen
enable()
unddisable()
können Ihre Arbeit folgendermaßen erledigen:Welches ist das gleiche wie
und
quelle
Das hat den Job für mich gemacht:
quelle
Wenn Sie in der jQuery-Welt ein Objekt aus einer Reihe von DOM-Elementen auswählen möchten, sollten Sie eq () verwenden. .
Beispiele:
oder
quelle
Laut Dokumentation :
https://api.jqueryui.com/dialog/#option-buttons
Um die Schaltfläche einfach auswählen zu können, können Sie der Schaltfläche eine eigene CSS-Klasse hinzufügen, die aktiviert / deaktiviert sein sollte.
Dann würde das Aktivieren / Deaktivieren folgendermaßen aussehen:
quelle
Wenn jemand beim Klicken eine Schaltfläche durch eine Ladeanimation ersetzen möchte (z. B. wenn eine Schaltfläche "Senden" das Formular im Dialogfeld sendet), können Sie die Schaltfläche wie folgt durch Ihr Bild ersetzen:
jQuery replaceWith docs
quelle
So deaktivieren Sie eine Schaltfläche beim Öffnen des Dialogfelds:
quelle