JQuery + скрытые поля ввода - PullRequest
0 голосов
/ 30 августа 2009

Упрощенная версия проблемы, с которой я столкнулся:

Вот моя HTML-форма:

<form enctype="multipart/form-data" method="post" action="/controller/action">
<input type="text" name="title" id="title" value="" class="input-text" />
<input type="hidden" name="hidden_field" value="" id="hidden_field" />
<input type="submit" name="submit_form" id="submit_form" value="Save" class="input-submit" />
</form>

Вот код JavaScript:

$(document).ready(function() {    
    $('#submit_form').hover(function() {
        $('#hidden_field').attr('value') = 'abcd';
    });
});

А вот действительно короткая версия бэкэнда PHP:

if (isset($_POST)) {
    var_dump($_POST);
}

Что я делаю, так это на пару секунд нажимаю кнопку #submit_form, чтобы убедиться, что код jQuery был выполнен, затем отправляю форму и:

  • $ _POST ['hidden_field'] пусто!

Почему это? Он должен содержать «abcd», поскольку я вставляю его в скрытое поле с помощью jQuery для события hover.

Ответы [ 4 ]

4 голосов
/ 30 августа 2009

Правильный способ установки значения:

 $('#hidden_field').val('abcd');

Ссылка: http://docs.jquery.com/Attributes/val

3 голосов
/ 30 августа 2009

Заявление

$('#hidden_field').attr('value') = 'abcd';

неверно. Вы должны получить ошибку там, когда вы присваиваете rvalue (объект jQuery) другому rvalue (строке). (Оператору присваивания требуется lvalue (например, переменная) слева.)

Вы, вероятно, хотите:

$('#hidden_field').val('abcd');

или

$('#hidden_field').attr('value', 'abcd');

(Первый вариант более jQuery-ish, но для этого случая оба эквивалентны.)

1 голос
/ 30 августа 2009

это:

$('#hidden_field').attr('value','abcd');
0 голосов
/ 08 августа 2012

Поскольку это скрытые элементы, обязательно проверьте их с помощью чего-то другого, кроме просмотра источника страницы, например нажатия F12, проверки с помощью alert() и т. Д. Источник исходной HTML-страницы не будет отражать изменения, внесенные в нее с помощью JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...