我一直在尝试使用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似乎在设置隐藏或不可见的输入字段时遇到了一些麻烦。

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


当前回答

最后,我找到了一个解决方案,很简单:

document.getElementById("texens").value = "tinkumaster";

效果非常好。不知道为什么jQuery没有退回到这一步。

其他回答

我也有同样的问题,我找到了问题所在。我把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" />

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

最后,我找到了一个解决方案,很简单:

document.getElementById("texens").value = "tinkumaster";

效果非常好。不知道为什么jQuery没有退回到这一步。

$('input[name=hidden_field_name]').val('newVal');

为我工作,其实两者都不是

$('input[id=hidden_field_id]').val('newVal');

nor

$('#hidden_field_id').val('newVal');

did.

.val没有为我工作,因为我抓取值属性服务器端和值并不总是更新。所以我用了:

var counter = 0;
$('a.myClickableLink').click(function(event){
   event.preventDefault();
   counter++;

   ...
   $('#myInput').attr('value', counter);
}

希望它能帮助到别人。

使用ID:

$('input:hidden#texens').val('tinkumaster');

使用类:

$('input:hidden.many_texens').val('tinkumaster');