Установка значения скрытого ввода

Идея: я устанавливаю значение ввода с type="hidden" через обычный Javascript или jQuery.

Проблема: ни jQuery, ни document.getElementById не найдут скрытый ввод, хотя я абсолютно уверен, что селектор правильный и конфликтующих элементов нет.

Код: я не могу опубликовать большую его часть, потому что он полон довольно сложного PHP, который сбивает меня с толку, когда я просто смотрю на него.

Вот javascript:

$("#" + input.id.substr(0,2) + "_budget_hidden").val(budg_total);

Примечание: в селекторе все в порядке, а "ввод" — это другой элемент, который я использую для ссылки на скрытый.

Вот HTML:

<input type="hidden" name="s<?=$step_counter?>_budget_hidden" 
       id="s<?=$step_counter?>_budget_hidden" value="0" />

Код немного вырван из контекста, но это скорее общая проблема с Javascript, чем синтаксическая ошибка. Мысли?


person Will    schedule 07.07.2010    source источник


Ответы (3)


В $("#" + input.id.substr(0,2) + "_budget_hidden").val(budg_total); вы берете два символа перед первым символом подчеркивания в своем скрытом идентификаторе. Однако ваш скрытый идентификатор имеет только один символ 's'

ИЗМЕНИТЬ

Хорошо, <?= ?> был скрыт до редактирования вопроса.

Вы вызываете свой скрипт после события загрузки тела? БЫВШИЙ:

$(document).ready(function(){
    $("#" + input.id.substr(0,2) + "_budget_hidden").bind("keyPressed",function(){
        $("#" + input.id.substr(0,2) + "_budget_hidden").val(budg_total);
     }
});
person Gregoire    schedule 07.07.2010
comment
Он вызывается в событии onkeypress для входной переменной, на которую я ссылаюсь в селекторе jQuery. - person Will; 07.07.2010
comment
О, я понимаю, что вы говорите. Событие определяется встроенно, на самом входе. onkeypress=updateDifferences(this) Так что теоретически это не должно быть проблемой. - person Will; 07.07.2010
comment
@ Как вы можете нажимать клавишу при скрытом вводе? они не показаны. - person Gregoire; 07.07.2010
comment
Нажатие клавиши находится на другом текстовом вводе, который вызывает функцию, которая изменяет скрытый ввод. - person Will; 07.07.2010

К сведению: мы можем получить скрытое входное значение с помощью jQuery, даже мы можем редактировать любое скрытое входное значение с помощью jQuery.

Я думаю, что ваш способ получения скрытого значения с помощью метода substr вызывает некоторые проблемы. Вы используете как substr(0, 2), поэтому убедитесь, что переменная $step_variable является однозначной цифрой, иначе ваш код не вернет правильный результат.

Ниже я привожу пример кода, проверьте его один раз.

Вот javascript:

    var input_id = $("hidden_val").attr("id").substr(1);
    $("#" + input_id + "_budget_hidden").val(budg_total);

Вот HTML:

    input type="hidden" class="hidden_val" name="s_budget_hidden" id="s" value="0" 

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

person Siva    schedule 07.07.2010
comment
Это отличный момент, который мог вызвать некоторые потенциальные ошибки. Я просто решил вместо этого использовать взорваться и избежать неприятностей. Однако конкретный ввод, над которым я экспериментировал, имел значение step_counter, равное 2, так что это в любом случае не имело бы значения. Я не на 110% уверен, что селектор правильный - я повторил его, и он показывает точно так же, как идентификатор скрытого ввода, к которому я пытаюсь получить доступ. Это jQuery/Javascript, а не сам селектор. - person Will; 07.07.2010

Я думаю, что input.id.substr(0,2) говорит начинать с начала строки, брать 2 символа и использовать это.

http://www.w3schools.com/jsref/jsref_substr.asp

Попробуйте использовать Firebug, чтобы увидеть результат вызова этого метода.

person Community    schedule 07.07.2010
comment
Да, это то, что делает подстрока. Как я уже сказал, это довольно сложная система, вырванная из контекста, но я гарантирую, что конкретный селектор точен и соответствует скрытому элементу формы на странице. Я использовал Firebug, и ошибок или предупреждений нет. - person Will; 07.07.2010