Не могу установить значение скрытого поля ввода, используя jQuery - PullRequest
34 голосов
/ 21 января 2010

У меня есть простое поле ввода внутри тега формы:

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

  </form>
</body>

Я пытался установить это значение из файла js:

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

но в источнике html атрибут вообще не установлен. Если я пытаюсь установить тип ввода «кнопка» или что-то еще, это работает. Я просто не могу сделать это с полем ввода hidden. Что я делаю не так?

Ответы [ 11 ]

26 голосов
/ 21 января 2010

Можете ли вы получить значение из скрытого поля, если вы установите тег val?

, например

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

$(document).ready(function(){
  alert($('#foo').val());
})
25 голосов
/ 21 января 2010

Я понял это. Значение было установлено jQuery, но при просмотре источника новое значение не показывалось. Я попробовал это (спасибо Фермин):

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

и отображает измененное значение.

23 голосов
/ 19 октября 2011

Лучший ответ, который я нашел, был в форме http://forum.jquery.com/topic/passing-value-to-hidden-form-field.

Вместо $('#Data').val(data); Где идентификатор скрытого поля - «Данные»

Использование $('input[name=Data]').val(data);

У меня отлично работает

4 голосов
/ 15 октября 2010

Я тоже боролся с этим. Если вы установите начальное значение, скажем, «0», а затем посмотрите DOM, используя что-то вроде Firebug, вы заметите, что DOM затем обновляется. По какой-то причине, если начальное значение установлено в null или пустую строку, DOM не обновляется, но значение фактически сохраняется.

Вы можете проверить это, предупредив val после того, как вы установили его (как предлагалось в предыдущих сообщениях)

2 голосов
/ 17 мая 2011

У меня была эта проблема, когда POST -ing моя форма и мой PHP-скрипт не могли получить значение POSTЯ использовал это:

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

Надеюсь, это поможет.

1 голос
/ 19 ноября 2015

Я знаю, что уже поздно, но все же это может кому-то помочь .... Если ни одно из вышеперечисленных решений не работает, просто сделайте это ...

$(document).ready(function() {
$('#foo').attr("value","foo") });
1 голос
/ 20 октября 2010

У меня была такая же проблема со скрытым полем ввода. Если бы я установил начальное значение на 0, он работает нормально, но иногда я не хотел иметь начальное значение 0. Итак, я проверил со значением = "", пробел, и это работает для меня тоже. Если вы заполняете значение динамически из PHP, вы можете сделать value="<?= $val+0; ?>", если для вас подходит 0, или value="<?= $val; ?> ", если с пробелом все в порядке.

1 голос
/ 21 января 2010

Мне нужно просмотреть весь файл, но я предполагаю, что либо вы не включили исходный файл jQuery.js, либо у вас есть несколько элементов с идентификатором foo

0 голосов
/ 19 апреля 2018

Я подтвердил, что установка значения скрытого поля не работает с селектором jQuery, как это ...

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

Не будет обновлять скрытое поле ... шокирующее.

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

Вместо этого был вынужден использовать скрытое поле CSS.

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

Очевидно, есть и другие проблемы с использованием id скрытого поля ... Установка значения скрытого поля в форме с помощью jQuery ".val ()" не работает

Примечание: не забудьте получить значение в консоли, а не проверять.

$('[name="my_field"]').val();
0 голосов
/ 12 февраля 2015

Вместо того, чтобы инициализировать ваш атрибут значения строкой, инициализируйте ваш ввод следующим образом.

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

"foo" будет содержать новое значение, которое вы также установите.

...