Установите значение скрытого поля в форме с помощью jQuery ".val()" не работает
Я пытался установить значение скрытого поля в форме с помощью jQuery, но безуспешно.
вот пример кода, который объясняет проблему. Если я сохраняю тип ввода "текст", он работает без каких-либо проблем. Но, изменение типа ввода на "скрытый", не работает !
<html>
<head>
<script type="text/javascript" src="jquery.js">
</script>
<script type="text/javascript">
$(document).ready(function() {
$("button").click(function() {
$("input:text#texens").val("tinkumaster");
});
});
</script>
</head>
<body>
<p>
Name:
<input type="hidden" id="texens" name="user" value="texens" />
</p>
<button>
Change value for the text field
</button>
</body>
</html>
Я также попытался выполнить следующее обходное решение, установив тип ввода в "текст", а затем используя стиль "display:none" для поля ввода. Но, это также не удается !
Кажется, jQuery имеет некоторые проблемы с установкой скрытых или невидимых полей ввода.
какие идеи? Есть ли обходной путь для этого, что на самом деле работает?
15 ответов:
:textне удастся для ввода со значением типаhidden. Также гораздо эффективнее просто использовать:$("#texens").val("tinkumaster");атрибуты ID должны быть уникальными на веб-странице, убедитесь, что ваши, поскольку это может способствовать любым проблемам, которые у вас возникли, и указание более сложного селектора просто замедляет работу и не выглядит так аккуратно.
пример в http://jsbin.com/elovo/edit, используя Ваш пример кода на http://jsbin.com/elovo/2/edit
Если у вас возникли проблемы с установкой значения скрытого поля, потому что вы передаете ему идентификатор, это решение:
вместо
$("#hidden_field_id").val(id)просто делать$("input[id=hidden_field_id]").val(id). Не уверен, в чем разница, но это работает.
наконец, я нашел решение и оно очень простое:
document.getElementById("texens").value = "tinkumaster";работает как шарм. Не знаю, почему jQuery не возвращается к этому.
у меня была такая же проблема. как ни странно google chrome и, возможно, другие (не уверен) не нравится
$("#thing").val(0); input type="hidden" id="thing" name="thing" value="1" />(без изменений)
$("#thing").val("0"); input type="hidden" id="thing" name="thing" value="1" />(без изменений)
но это работает!!!!
$("#thing").val("no"); input type="hidden" id="thing" name="thing" value="no" />изменения!!
$("#thing").val("yes"); input type="hidden" id="thing" name="thing" value="yes" />изменения!!
должно быть"строка вещь"
.вал не работал на меня, потому что Я беру значение атрибута на стороне сервера и значение не всегда обновлялось. поэтому я использовал:
var counter = 0; $('a.myClickableLink').click(function(event){ event.preventDefault(); counter++; ... $('#myInput').attr('value', counter); }надеюсь, что это поможет кому-то.
$('input[name=hidden_field_name]').val('newVal');работал на меня, когда ни один
$('input[id=hidden_field_id]').val('newVal');, ни
$('#hidden_field_id').val('newVal');сделал.
на самом деле, это постоянная проблема. Хотя Энди прав насчет загруженного источника,.вал.(..) и. attr ('value',...) не похоже, чтобы на самом деле изменить html. Я думаю, что это проблема JavaScript и не проблема jquery. Если бы вы использовали firebug, даже у вас был бы тот же вопрос. Хотя кажется, что если вы отправите форму с измененными значениями, она пройдет, html не изменится. Я столкнулся с этой проблемой, пытаясь создать печатью измененная форма (выполнение [формы].html ()) он копирует все в порядке, включая все изменения за исключением значения изменения. Таким образом, мой модальный предварительный просмотр печати несколько бесполезен... мой обходной путь может заключаться в том, чтобы "построить" скрытую форму, содержащую добавленные значения, или создать предварительный просмотр независимо и сделать каждую модификацию, которую пользователь делает также изменить предварительный просмотр. Оба являются неоптимальными, но если кто-то не выяснит, почему поведение установки значения не изменяет html (в DOM я предполагая) это придется сделать.
у меня была та же проблема, и я узнал, что был неправ. У меня был HTML, определенный как
<form action="url" method="post"> <input type="hidden" id="email" /> <form> <script> function onsomeevent() { $("#email").val("[email protected]"); } </script>чтение значений формы на сервере всегда приводило к тому, что электронная почта была пустой. После того, как я почесал голову (и многочисленные поиски), я понял, что ошибка не определяла форму/ввод правильно. При изменении ввода (как показано далее), он работал как шарм
<input type="hidden" id="email" name="email" />добавление в этот поток в случае, если другие имеют ту же проблему.
используя
val()не работает для меня. Я должен был использовать.attr()везде. Также у меня были разные типы входов и должны были быть довольно явными в случае флажков и выбора меню.обновить текстовое поле
$('#model_name').attr('value',nameVal);обновить изображение рядом с файловым вводом
$('#img-avatar').attr('src', avatarThumbUrl);обновление логическое
if (isActive) { $('#model_active').attr('checked',"checked"); } else { $('#model_active').attr('checked', null) ; }обновление выберите (число или строка)
$('#model_framerate').children().each(function(i, el){ var v = $(el).val(); if (v === String(framerateVal)) { $(el).attr('selected','selected'); } else { $(el).attr('selected',null); } }
в моем случае я использовал нестрочный (целое число) в качестве параметра val (), который не работает, трюк так же прост, как
$("#price").val('' + price);
еще один получил здесь впустую часть моего времени, так что я думал, что я передам по наконечнику. У меня было скрытое поле, которое я дал id . и
[]скобки в названии (из-за использования с struts2) и селектор$("#model.thefield[0]")не нашел бы мое скрытое поле. Переименование идентификатора без использования точек и скобок привело к началу работы селектора. Так что в конце концов я получил идентификаторmodel_the_field_0вместо этого и селектор работал нормально.
используя ID:
$('input:hidden#texens').val('tinkumaster');использование класса:
$('input:hidden.many_texens').val('tinkumaster');
<javascript> slots=''; hidden=''; basket = 0; cost_per_slot = $("#cost_per_slot").val(); //cost_per_slot = parseFloat(cost_per_slot).toFixed(2) for (i=0; i< check_array.length; i++) { slots += check_array[i] + '\r\n'; hidden += check_array[i].substring(0, 8) + '|'; basket = (basket + parseFloat(cost_per_slot)); } // Populate the Selected Slots section $("#selected_slots").html(slots); // Update hidden slots_booked form element with booked slots $("#slots_booked").val(hidden); // Update basket total box basket = basket.toFixed(2); $("#total").html(basket);
просто используйте синтаксис ниже get и set
GET
//Script var a = $("#selectIndex").val();здесь переменная будет содержать значение hiddenfield(selectindex)
сервер
<asp:HiddenField ID="selectIndex" runat="server" Value="0" />SET
var a =10; $("#selectIndex").val(a);
любой другой, кто борется с этим, есть очень простой "встроенный" способ сделать это с помощью jQuery:
<input type="search" placeholder="Search" value="" maxlength="256" id="q" name="q" style="width: 300px;" onChange="$('#ADSearch').attr('value', $('#q').attr('value'))"><input type="hidden" name="ADSearch" id="ADSearch" value="">это задает значение скрытого поля при вводе текста в видимый ввод с помощью события onChange. Полезно (как в моем случае), когда вы хотите передать значение поля в форму "расширенный поиск" и не заставлять пользователя повторно вводить свой поисковый запрос.
Comments