Ich habe versucht, den Wert eines ausgeblendeten Felds in einem Formular mit jQuery festzulegen, aber ohne Erfolg.
Hier ist ein Beispielcode, der das Problem erklärt. Wenn ich den Eingabetyp auf "Text" behalte, funktioniert dies ohne Probleme. Das Ändern des Eingabetyps in "versteckt" funktioniert jedoch nicht!
<html>
<head>
<script type="text/javascript" src="jquery.js">
</script>
<script type="text/javascript">
$(document).ready(function() {
$("button").click(function() {
$("input:text#texens").val("tinkumaster");
});
});
</script>
</head>
<body>
<p>
Name:
<input type="hidden" id="texens" name="user" value="texens" />
</p>
<button>
Change value for the text field
</button>
</body>
</html>
Ich habe auch die folgende Problemumgehung versucht, indem ich den Eingabetyp auf "Text" gesetzt und dann einen "Anzeige: Keine" -Stil für das Eingabefeld verwendet habe. Das scheitert aber auch! Es scheint, dass jQuery Probleme beim Festlegen versteckter oder unsichtbarer Eingabefelder hat.
Irgendwelche Ideen? Gibt es eine Problemumgehung dafür, die tatsächlich funktioniert?
quelle
val()
funktioniert die versteckte Eingabe einwandfrei, indem der Wert von "nicht geändert" in "geändert" geändert wird. Ich habe das Beispiel so überarbeitet, dass es den oben eingefügten Code enthält, mit einer Warnung zur Bestätigung der Wertänderung: jsbin.com/elovo/2/editWenn Sie Probleme haben, den Wert eines ausgeblendeten Felds festzulegen, weil Sie ihm eine ID übergeben, ist dies die Lösung:
Anstatt es
$("#hidden_field_id").val(id)
einfach zu tun$("input[id=hidden_field_id]").val(id)
. Ich bin mir nicht sicher, was der Unterschied ist, aber es funktioniert.quelle
Endlich habe ich eine Lösung gefunden und es ist eine einfache:
Klappt wunderbar. Keine Ahnung, warum jQuery nicht darauf zurückgreift.
quelle
type="radio"
. Ich bin zu faul, um ein Problem zu melden, insbesondere angesichts der Tatsache, dass ich dieses Problem vor 4 Jahren gelöst habe. Ich bin auch hin und her gerissen, wenn es in jQuery behoben werden sollte - möglicherweise ist es so implementiert, um jQuery-Kinder vor sich selbst zu schützen? Wer weiß ...Ich hatte das gleiche Problem. Seltsamerweise mochten Google Chrome und möglicherweise andere (nicht sicher) nicht
(Keine Änderung)
(Keine Änderung)
aber das funktioniert !!!!
ÄNDERUNGEN!!
ÄNDERUNGEN!!
muss eine "String-Sache" sein
quelle
.val(' 0')
, das sowohlparseInt
in Javascript als auchint()
in Python korrekt analysiert wird .arbeitete für mich, wenn keiner
Noch
tat.
quelle
.val hat bei mir nicht funktioniert, weil ich die Server-Seite des Wertattributs greife und der Wert nicht immer aktualisiert wurde. Also habe ich verwendet:
Hoffe es hilft jemandem.
quelle
Eigentlich ist dies ein anhaltendes Problem. Während Andy mit der heruntergeladenen Quelle Recht hat, scheinen .val (...) und .attr ('value', ...) das HTML nicht wirklich zu ändern. Ich denke, dies ist ein Javascript-Problem und kein JQuery-Problem. Wenn Sie sogar Firebug verwendet hätten, hätten Sie die gleiche Frage gehabt. Wenn Sie das Formular mit den geänderten Werten senden, wird es anscheinend nicht geändert. Ich bin auf dieses Problem gestoßen, als ich versucht habe, eine Druckvorschau des geänderten Formulars zu erstellen (do [form] .html ()). Es kopiert alles in Ordnung, einschließlich aller Änderungen außerWerte ändern sich. Daher ist meine modale Druckvorschau etwas nutzlos. Meine Problemumgehung muss möglicherweise darin bestehen, ein verstecktes Formular mit den hinzugefügten Werten zu erstellen oder die Vorschau unabhängig zu generieren und bei jeder vom Benutzer vorgenommenen Änderung auch die Vorschau zu ändern. Beide sind nicht optimal, aber wenn nicht jemand herausfindet, warum das Verhalten beim Setzen von Werten das HTML nicht ändert (im DOM gehe ich davon aus), muss es dies tun.
quelle
Ich hatte das gleiche Problem und fand heraus, was los war. Ich hatte den HTML-Code definiert als
Das Lesen der Formularwerte auf dem Server führte immer dazu, dass E-Mails leer waren. Nachdem ich mich am Kopf gekratzt hatte (und zahlreiche gesucht hatte), stellte ich fest, dass der Fehler darin bestand, das Formular / die Eingabe nicht richtig zu definieren. Beim Ändern der Eingabe (wie im Folgenden gezeigt) funktionierte es wie ein Zauber
Hinzufügen zu diesem Thread, falls andere das gleiche Problem haben.
quelle
In meinem Fall habe ich eine Nicht-Zeichenfolge (Ganzzahl) als Parameter von val () verwendet, was nicht funktioniert. Der Trick ist genauso einfach wie
quelle
Verwenden
val()
hat bei mir nicht funktioniert. Ich musste benutzen.attr()
überall verwenden. Außerdem hatte ich verschiedene Arten von Eingaben und musste bei Kontrollkästchen und ausgewählten Menüs ziemlich explizit sein.Textfeld aktualisieren
Aktualisieren Sie das Bild neben der Dateieingabe
Booleschen Wert aktualisieren
Update auswählen (mit Nummer oder String)
quelle
Ein anderes Gotcha hier verschwendete einen Teil meiner Zeit, also dachte ich, ich würde die Spitze weitergeben. Ich hatte ein verstecktes Feld, das ich mit einem Ausweis versehen hatte. und
[]
Klammern im Namen (aufgrund der Verwendung mit struts2) und der Selektor$("#model.thefield[0]")
würde mein verstecktes Feld nicht finden. Durch das Umbenennen der ID, um die Punkte und Klammern nicht zu verwenden, begann der Selektor zu arbeiten. Am Ende hatte ichmodel_the_field_0
stattdessen eine ID von und der Selektor funktionierte einwandfrei.quelle
$("#model.thefield[0]")
interpretiert wird als: ein Element mitid
gleichmodel
, ein CSSclass
vonthefield
und einigeattribute
aufgerufen0
... Wenn Sie diese Zeichen in Ihremid
verwenden möchten, verwenden Sie den von Chuck Callebs in seiner Antwort vorgeschlagenen Ansatz . In HTML5id
kann dies eine beliebige Zeichenfolge sein, die nicht leer ist und keine Leerzeichen ( Referenz ) enthält.ID verwenden:
Klasse verwenden:
quelle
Wenn Sie nach haml suchen, ist dies die Antwort für ein verstecktes Feld, um den Wert auf ein verstecktes Feld wie zu setzen
In Ihrer jquery konvertieren Sie einfach den Wert in einen String und hängen ihn dann mit der attr-Eigenschaft in jquery an. hoffe das funktioniert auch in anderen sprachen auch.
quelle
quelle
Verwenden Sie einfach die unten stehende Syntax get und set
BEKOMMEN
hier enthält eine Variable den Wert von hiddenfield (selectindex)
Serverseite
EINSTELLEN
quelle
Für alle anderen, die damit zu kämpfen haben, gibt es eine sehr einfache "Inline" -Methode, um dies mit jQuery zu tun:
Dadurch wird der Wert des ausgeblendeten Felds festgelegt, wenn Text mithilfe des onChange-Ereignisses in die sichtbare Eingabe eingegeben wird. Hilfreich (wie in meinem Fall), wenn Sie einen Feldwert an ein Formular "Erweiterte Suche" übergeben möchten und den Benutzer nicht zwingen müssen, seine Suchabfrage erneut einzugeben.
quelle