Ich habe diesen HTML:
<input type="text" name="textField" />
<input type="submit" value="send" />
Wie kann ich so etwas machen:
- Wenn das Textfeld leer ist, sollte die Übermittlung deaktiviert sein (disabled = "disabled").
- Wenn etwas in das Textfeld eingegeben wird, um das deaktivierte Attribut zu entfernen.
- Wenn das Textfeld wieder leer wird (der Text wird gelöscht), sollte die Senden-Schaltfläche wieder deaktiviert werden.
Ich habe so etwas versucht:
$(document).ready(function(){
$('input[type="submit"]').attr('disabled','disabled');
$('input[type="text"]').change(function(){
if($(this).val != ''){
$('input[type="submit"]').removeAttr('disabled');
}
});
});
… Aber es funktioniert nicht. Irgendwelche Ideen?
javascript
jquery
html
forms
kmunky
quelle
quelle
Antworten:
Das Problem ist, dass das Änderungsereignis nur ausgelöst wird, wenn der Fokus von der Eingabe wegbewegt wird (z. B. wenn jemand auf die Eingabe klickt oder sie aus den Registerkarten entfernt). Versuchen Sie stattdessen, keyup zu verwenden:
quelle
input id="loginButton" type="submit" name="Submit" value="Login" disabled>
zeigt eine deaktivierte Schaltfläche mit deaktivierten CSS-Klassen an.quelle
Diese Frage ist 2 Jahre alt, aber es ist immer noch eine gute Frage und es war das erste Google-Ergebnis ... In allen vorhandenen Antworten wird empfohlen , das HTML- Attribut (removeAttr ("disabled")) "disabled" festzulegen und zu entfernen , was nicht der Fall ist der richtige Ansatz. Es gibt viel Verwirrung in Bezug auf Attribut und Eigentum.
HTML
Das "deaktiviert" im
<input type="button" disabled>
Markup wird vom W3C als boolesches Attribut bezeichnet .HTML vs. DOM
Zitat:
https://stackoverflow.com/a/7572855/664132
JQuery
Verbunden:
Relevant:
Zusammenfassung
Verwenden Sie die Methode .prop () , um [...] DOM-Eigenschaften wie den [...] deaktivierten Status von Formularelementen zu ändern .
( http://api.jquery.com/attr/ )
Was den Teil zum Deaktivieren bei Änderung betrifft: Es gibt ein Ereignis namens "Eingabe", aber die Browserunterstützung ist begrenzt und es handelt sich nicht um ein jQuery-Ereignis, sodass jQuery nicht funktioniert. Das Änderungsereignis funktioniert zuverlässig, wird jedoch ausgelöst, wenn das Element den Fokus verliert. Man könnte also beide kombinieren (einige Leute hören auch auf Keyup und Paste).
Hier ist ein ungetesteter Code, der zeigt, was ich meine:
quelle
Um die Verwendung deaktivierter Attribute zu entfernen,
und um die Verwendung deaktivierter Attribute hinzuzufügen,
Genießen :)
quelle
oder für uns, die jQ nicht für jede Kleinigkeit verwenden möchten:
quelle
Eric, Ihr Code schien für mich nicht zu funktionieren, wenn der Benutzer Text eingibt und dann den gesamten Text löscht. Ich habe eine andere Version erstellt, wenn jemand das gleiche Problem hatte. Hier geht's Leute:
quelle
Es wird so funktionieren:
Stellen Sie sicher, dass Ihr HTML-Code ein Attribut "deaktiviert" enthält
quelle
Hier ist die Lösung für das Dateieingabefeld .
So deaktivieren Sie eine Senden-Schaltfläche für ein Dateifeld, wenn keine Datei ausgewählt ist, und aktivieren Sie diese Option, nachdem der Benutzer eine Datei zum Hochladen ausgewählt hat:
Html:
quelle
Sie können auch so etwas verwenden:
Hier ist ein Live-Beispiel
quelle
Für die Formularanmeldung:
Javascript:
quelle
Wenn es sich bei der Schaltfläche selbst um eine Schaltfläche im jQuery-Stil handelt (mit .button ()), müssen Sie den Status der Schaltfläche aktualisieren, damit die richtigen Klassen hinzugefügt / entfernt werden, sobald Sie das deaktivierte Attribut entfernt / hinzugefügt haben.
quelle
In den obigen Antworten wird nicht auch nach menübasierten Ausschneide- / Einfügeereignissen gesucht. Unten ist der Code, mit dem ich beides mache. Beachten Sie, dass die Aktion tatsächlich mit einer Zeitüberschreitung ausgeführt wird, da der Schnitt und vergangene Ereignisse tatsächlich ausgelöst werden, bevor die Änderung vorgenommen wurde. Die Zeitüberschreitung gibt also etwas Zeit dafür.
quelle
Vanilla JS-Lösung. Es funktioniert für ein ganzes Formular, nicht nur für eine Eingabe.
In Frage ausgewähltes JavaScript-Tag.
HTML-Formular:
Einige Erklärungen:
In diesem Code fügen wir ein Keyup-Ereignis im HTML-Formular hinzu und überprüfen bei jedem Tastendruck alle Eingabefelder. Wenn mindestens ein Eingabefeld leer ist oder nur Leerzeichen enthält, weisen wir der deaktivierten Variablen den wahren Wert zu und deaktivieren die Schaltfläche zum Senden.
Wenn Sie die Schaltfläche "Senden" deaktivieren müssen, bis alle erforderlichen Eingabefelder ausgefüllt sind, ersetzen Sie:
mit:
Dabei ist required_inputs bereits als Array deklariert, das nur erforderliche Eingabefelder enthält.
quelle
Wir können einfach haben, wenn & sonst. Wenn Ihre Eingabe leer ist, können wir haben
sonst können wir falsch in wahr verwandeln
quelle
Deaktivieren:
$('input[type="submit"]').prop('disabled', true);
Aktivieren:
$('input[type="submit"]').removeAttr('disabled');
Der obige Aktivierungscode ist genauer als:
Sie können beide Methoden verwenden.
quelle
Ich musste ein bisschen arbeiten, um dies an meinen Anwendungsfall anzupassen.
Ich habe ein Formular, in dem alle Felder vor dem Absenden einen Wert haben müssen.
Folgendes habe ich getan:
Vielen Dank an alle für ihre Antworten hier.
quelle
Bitte beachten Sie den folgenden Code, um die Schaltfläche Senden zu aktivieren oder zu deaktivieren
quelle
Schauen Sie sich diesen Ausschnitt aus meinem Projekt an
$(this).attr('disabled', 'disabled');
quelle
Alle Arten von Lösungen werden mitgeliefert. Ich möchte also eine andere Lösung suchen. Es ist einfach einfacher, wenn Sie
id
Ihren Eingabefeldern ein Attribut hinzufügen .Jetzt ist hier dein
jQuery
quelle
Ich hoffe, dass der folgende Code jemandem hilft .. !!! :) :)
quelle