Селектор 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>
Консоль показывает:
[]
[]
Ответы
Ответ 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');