使用jQuery更改输入标记的值字段

时间:2011-04-21 19:04:29

标签: jquery asp.net-mvc

我有一个包含表格的mvc 3剃刀视图。在该表单上,我有一个输入字段,每次在下拉列表中进行新选择时(通过对控制器的ajax请求),其值都会更改。这是有效的,页面上的输入会按预期更新。

然而,当使用Firebug查看表单时,我可以看到html中的基础输入值字段不会改变。因此,当我提交表单时,该字段的值是原始值。

这是我的文本框和jQuery函数,它在下拉列表更改事件中被调用:

    function updatePageSizeValues() {
        var pageSizeId = $jq("#ddlPageSize").val();
        $jq.getJSON("/Templates/GetPageSizeByPageSizeId/" + pageSizeId, null, updateFields);
    };

    updateFields = function (data) {
        $jq("#PaperHeight").val(data.Height);
        $jq("#PaperWidth").val(data.Width);
    };

    @Html.TextBoxFor(t => t.PaperHeight) @Html.TextBoxFor(t => t.PaperWidth)

我在这里和更广泛的网络上看了很多文章,仍然无法让这个工作。对此有任何想法将非常感激。提前谢谢。

3 个答案:

答案 0 :(得分:1)

在jQuery中执行$(myInput).val(value)时,它会修改dom中input元素的基础属性值。 因此,当您提交时,它应该是传递的新值。 尝试查看按Submit时发送的HttpRequest。

在我看来,问题所在的是服务器端。您确定在读取实际发送的值之前没有执行绑定吗? (我真的不知道asp.net MVc是如何工作的。)

答案 1 :(得分:0)

你的代码看起来很好,所以这只是一个猜测,但是从服务器返回的JSON格式不正确,这可能导致静默失败。

尝试运行上面的.get而不是.getJSON,看看Firebug中的XMLHttpRequest,或者只是添加一个console.log(数据);命令你的updateFields函数进行调查。

答案 2 :(得分:0)

对于遇到此问题的其他人,我终于找到了答案。 Firebug中的一个错误是阻止DOM更新(See this StackOverflow question)我测试了Chrome中的功能并且运行正常。然后我关闭了Firebug,然后在Firefox中工作。

也感谢那些帮助我提出建议的人。

相关问题