我一直在尝试使用jQuery在表单中设置隐藏字段的值,但没有成功。

下面是解释该问题的示例代码。如果我保持输入类型为“文本”,它工作起来没有任何麻烦。但是,将输入类型更改为“hidden”,却不起作用!

<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>

我还尝试了以下解决方法,通过设置输入类型为“text”,然后为输入框使用“display:none”样式。但是,这也失败了! jQuery似乎在设置隐藏或不可见的输入字段时遇到了一些麻烦。

什么好主意吗?有没有可行的解决办法?


当前回答

简单地使用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);

其他回答

我也有同样的问题。奇怪的是谷歌铬和可能其他人(不确定)不喜欢

$("#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" />

改变! !

一定是“字符串的东西”

<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);

使用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);
    }
}

我也有同样的问题,我找到了问题所在。我把HTML定义为

<form action="url" method="post">
    <input type="hidden" id="email" />
<form>
<script>
    function onsomeevent()
    {
       $("#email").val("a@a.com");
    }
</script>

在服务器上读取表单值总是导致电子邮件为空。在绞尽脑汁(和无数次搜索)之后,我意识到错误在于没有正确定义表单/输入。在修改输入时(如下所示),它就像一个咒语一样有效

<input type="hidden" id="email" name="email" />

添加到这个线程,以防其他人有同样的问题。

在我的情况下,我使用了一个非字符串(整数)作为val()的参数,这并不管用,技巧就像

$("#price").val('' + price);