Подтвердить что ты не робот

Селектор jquery не может читать из скрытого поля

(ответы объединены в другой вопрос)

Работает следующий код jquery 1.3.2:

<input type="select" value="236434" id="ixd" name='ixd' />

<script>
console.log( $('#ixd') );
console.log( $("input[name='ixd']") );
</script>

Консоль показывает:

[вход # ixd 236434]

[вход # ixd 236434]

Однако установка входа в "скрытый" предотвращает работу селекторов. Любые подсказки?

<input type="hidden" value="236434" id="ixd" name='ixd' />

<script>
console.log( $('#ixd') );
console.log( $("input[name='ixd']") );
</script>

Консоль показывает:

[]

[]

4b9b3361

Ответ 1

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

Возможно, попробуйте следующее:

<input type="hidden" value="236434" id="ixd" name='ixd' />

<script>
    console.log($("#xid").val())
</script>

Это даст вам значение скрытого поля. Чтобы получить значение из поля формы, необходимо использовать метод .val().

Ответ 2

<input type="select" value="236434" id="ixd" name='ixd' />

Это даже правильная разметка?

Кажется, что выбор видимого входа извлекает его значение, даже без объяснения вызова .val(), тогда как выбор скрытого не делает:

Try:

console.log( $('#ixd').val() );
console.log( $("input[name='ixd'][type='hidden']") );

и

console.log( $("input[name='ixd']").val() );

Ответ 3

Это может быть проблемой в консоли. Я проверил тест и, похоже, все еще захватил экземпляр элемента. Я не могу точно сказать, что вы пытаетесь сделать здесь.

Если вы просто пытаетесь проверить, был ли найден объект, проверьте свойство length

console.log( $('#xid').length );

Если вы пытаетесь получить значение поля, используйте метод val

console.log( $('#xid').val() );

Наконец, возможно, что в вашем решении DOM еще не загружен полностью. Убедитесь, что вы завершаете свою логику внутри вызова document.ready.

$(document).ready(function() {
    console.log( $('#xid').val() );
});

Ответ 4

Если вы делаете это в ASP.Net, проверьте идентификатор своего элемента управления во время выполнения с помощью опции "Просмотр источника" в вашем браузере. Вы можете обнаружить, что ваш идентификатор управления не тот, который вы ожидаете, если, например, ваш элемент управления объявлен на странице содержимого. В этом случае ему будет присвоен идентификатор, управляемый его главной страницей. Вместо жесткого кодирования идентификатора в вашем jQuery вы можете ссылаться на его свойство ClientID с использованием встроенного синтаксиса ASP.Net, который также защитит вас от любых изменений в иерархии управления главной или контентной страницей.

Итак...

$('#<%= myHiddenControl.ClientID %>').val();

... был бы лучшим выбором, чем...

$('#ctl00_ContentPlaceHolder1_ctl00_ContentPlaceHolder1_myHiddenControl').val();

... хотя они оба будут работать.

Ответ 5

У меня возникла проблема, когда $('#field_id').val() не возвращало никакого значения, потому что скрытые поля были вложены (body > div > form > ul > li > p). Перемещение его из ul решило проблему.

Ответ 6

Если ни одна из вышеперечисленных задач не попытается выполнить

$('#xid').attr('value');