wake-up-neo.com

Der Wert des ausgeblendeten Eingabefelds kann nicht mit jQuery festgelegt werden

Ich habe ein einfaches Eingabefeld in einem Formular-Tag:

<body>
  <form action="#">
      <label>Input</label>
      <input type="hidden" id="foo" name="foo" />

  </form>
</body>

Ich habe versucht, diesen Wert aus einer JS-Datei festzulegen:

$(document).ready(function(){
    $('#foo').val('foo')
})

in der HTML-Quelle ist das Attribut jedoch nicht festgelegt. Wenn ich versuche, den Eingabetyp auf "button" oder irgendetwas anderes zu setzen, funktioniert es. Ich kann es einfach nicht mit einem hidden-Eingabefeld machen. Was mache ich falsch?

34
framomo86

Können Sie den Wert aus dem ausgeblendeten Feld abrufen, wenn Sie das val-Tag setzen?

z.B.

<input type="hidden" id="foo" name="foo" value="bar" />

$(document).ready(function(){
  alert($('#foo').val());
})
26
Fermin

Ich habe es herausgefunden. Der Wert wurde von jQuery festgelegt, aber als ich die Quelle sah, wurde der neue Wert nicht angezeigt. Ich habe es versucht (danke an Fermin):

$('#foo').val('poo')
alert($('#foo').val())

und es wurde der geänderte Wert angezeigt.

25
framomo86

Die beste Antwort, die ich gefunden habe, war in der Form http://forum.jquery.com/topic/passing-value-to-hidden-form-field .

Anstelle von $('#Data').val(data); Wenn die verborgene Feld-ID 'Daten' ist

Verwenden Sie $('input[name=Data]').val(data);

Funktioniert perfekt für mich

23
Jacob Tomlinson

Ich habe auch damit zu kämpfen. Wenn Sie einen Anfangswert festlegen, sagen Sie '0' und sehen Sie dann das DOM mit Firebug an, so dass Sie feststellen, dass das DOM dann aktualisiert wird. Wenn der Anfangswert auf null oder eine leere Zeichenfolge gesetzt ist, wird das DOM aus irgendeinem Grund nicht aktualisiert, der Wert wird jedoch immer noch gespeichert.

Sie können dies testen, indem Sie den Wert alarmieren, nachdem Sie ihn festgelegt haben (wie in früheren Beiträgen vorgeschlagen).

3
Stevie G

Ich hatte dieses Problem, als POST_ mein Formular und mein PHP -Skript POST_ed-Wert nicht erhalten konnte. Ich habe das benutzt:

$('#elemId').attr("name", theValue);

Ich hoffe es hilft.

2
remo

Ich weiß, dass es zu spät ist, aber dies könnte jemandem helfen.

$(document).ready(function() {
$('#foo').attr("value","foo") });
1
Giridhar Karnik

Ich hatte das gleiche Problem mit einem versteckten Eingabefeld ..__ Ich habe den Anfangswert auf 0 gesetzt, es funktioniert gut, aber manchmal wollte ich keinen Anfangswert von 0 ..__ haben = "", ein Leerzeichen, und es funktioniert auch für mich . Wenn Sie den Wert dynamisch aus PHP füllen, könnten Sie value="<?= $val+0; ?>" tun, wenn 0 für Sie in Ordnung ist, oder value="<?= $val; ?> ", wenn ein Leerzeichen in Ordnung ist.

1
mtom

Ich muss die gesamte Datei sehen, aber ich schätze, dass Sie entweder die Quelldatei jQuery.js nicht enthalten oder mehrere Elemente mit der ID foo haben.

1

Ich habe bestätigt, dass das Setzen des Wertes eines ausgeblendeten Feldes nicht mit einem jQuery-Selektor wie diesem funktioniert ...

$('[name="my_field"]').val('Something');

Wird ein verstecktes Feld nicht aktualisieren ... irgendwie schockierend.

<input type="hidden" name="my_field" id="my_field">

Wurde gezwungen, stattdessen ein verstecktes CSS-Feld zu verwenden.

<input type="text" name="my_field" id="my_field" style="display:none">

Anscheinend gibt es auch andere Probleme bei der Verwendung von id eines ausgeblendeten Felds ... Setzen Sie den Wert eines ausgeblendeten Felds in einem Formular mithilfe von ".val ()" von jQuery.

Hinweis: Stellen Sie sicher, dass Sie den Wert in der Konsole abrufen und nicht durch Überprüfen.

$('[name="my_field"]').val();
0
doublejosh

Statt Ihr Wertattribut mit einer Zeichenfolge zu initialisieren, initialisieren Sie Ihre Eingabe wie folgt.

<input type="hidden" name="foo" id="foo" value="${foo}">

"foo" enthält den neuen Wert, den Sie auch festlegen.

0
Noris

Keine der oben genannten Lösungen funktionierte für mich.

Ich musste folgendes tun, damit es funktioniert:

$('#foo').val(data).blur();
0