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

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


当前回答

在迷失在这个页面上无数的答案之后,没有一个真正有效,我找到了如何在我的情况下做到这一点。

出于某种原因,在选择器中使用输入并没有做到这一点。我在表单元素上没有ID,所以我不能为选择器使用任何ID。即使我做了,我也肯定不会成功。

以下是我的解决方案:

$("[name=something]").val("something");

基本上,选择名称为“something”的任何元素。试试看吧。

其他回答

如果你正在搜索haml,那么这是隐藏字段的答案,将值设置为一个隐藏字段,如

%input#forum_id.hidden

在jquery中,只需将值转换为字符串,然后使用jquery中的attr属性附加它。希望这也适用于其他语言。

$('#forum_id').attr('val',forum_id.toString());

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

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()不适合我。我必须在任何地方使用.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);
    }
}

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

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

改变! !

一定是“字符串的东西”