javascript - 为什么样式为 ="display:hidden"的字段会回发?

标签 javascript jquery html css forms

none 我有一个表单,用户可以通过单击复选框来隐藏或显示字段。我像这样隐藏字段:

 $("#ContactDetail_PostalAddressSameAsAddress").change(function () {
        if ($(this).prop('checked') != true) {
            $("#PostalAddressContainer").show("fast");
            $('#PostalAddressContainer :input').show();

        }
        else {
            $("#PostalAddressContainer").hide("fast");
            $('#PostalAddressContainer :input').hide();
        }
    });

我的印象是带有 style="display:none"的字段不会回发。但是,当我提交表单时,客户端验证不会验证隐藏字段,这正是我所期望的。但是,在服务器端 ModelState.IsValid 是假的,因为强制显示:没有设置字段。

在 fiddler 中,我可以看到 display:none 字段的表单数据。请帮忙。

最佳答案

尝试禁用表单域:

$("#PostalAddressContainer").prop("disabled", true);

如果只是隐藏,还是会随着POST请求一起发送。 CSS 永远不应该对表单行为产生任何影响,因为它的目的是改变事物的显示方式。

注意,这也是<input type="hidden">的重点- 不显示给用户,但仍与请求一起发送。

关于javascript - 为什么样式为 ="display:hidden"的字段会回发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22522400/

相关文章:

javascript - 用一条线连接两个圆圈(使用 DOM 元素)

javascript - 比立即调用函数表达式更好的方法来实现这一点?

javascript - 请求全屏 HTML5 视频 onPlay

javascript - 当输入区域没有文本时,Jquery 提交按钮不会被禁用

javascript - 如何让 AngularJS 更新输入值?

javascript - jquery "position().top"和 css3 "transform: scale()"之间的冲突

javascript - 背景页面的 Chrome 扩展程序问题

javascript - 使用 jQuery 定位纯文本

javascript - 在屏幕上显示选择选项图像

javascript - 调用 ID 包含 onclick 函数的索引