Установите значение скрытого поля в форме с помощью 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 имеет некоторые проблемы с установкой скрытых или невидимых полей ввода.



какие идеи? Есть ли обходной путь для этого, что на самом деле работает?

554   15  

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

    Ничего не найдено.