【问题标题】:JavaScript submit form excluding fieldsJavaScript 提交表单不包括字段
【发布时间】:2014-12-20 16:35:47
【问题描述】:

我有一个简单的 html 表单:

<form action="test" method="post" id="myForm">
    <input type="text" name="myTextField">
    <input type="text" name="myTextField2">
    <input type="text" name="dontSubmitThisField">
</form>

我需要使用 JavaScript 提交它,但我想从请求中排除 dontSubmitThisField 字段。没有 Ajax 有没有办法做到这一点?

【问题讨论】:

  • disabled html 属性会做你想做的事

标签: javascript forms submit


【解决方案1】:

只需禁用该字段。

如果用户无法更新该字段,则通过 HTML 进行:http://www.w3schools.com/tags/att_input_disabled.asp

或者通过带有 on submit 事件的 jQuery 来实现:

$('#myForm').submit(function(){
    $('input[name="dontSubmitThisField"]').prop('disabled', true);
});

【讨论】:

    【解决方案2】:

    禁用的字段或没有name 属性的字段将不会提交。

    但是,如果您想以某种方式命名字段并且不想预先禁用它们,则可以拦截所有表单提交并禁用具有data-no-submit 属性的每个字段。

    document.addEventListener('submit', function (e) {
        if (!e.defaultPrevented) {
            [].forEach.call(e.target.querySelectorAll('[data-no-submit]'), function (field) {
                field.disabled = true;
            });
        }
    });
    

    那么你可以这样做:

    <input type="text" name="dontSubmitThisField" data-no-submit>
    

    【讨论】:

      【解决方案3】:

      你为什么要收集你不需要的信息?

      无论如何,如果您删除该字段的名称,它将不会发布

      【讨论】:

      • 不是因为你不把信息发给服务器就不需要收集了。考虑一个密码更改表。您将拥有一个不必发送的密码确认字段。
      【解决方案4】:

      您可以禁用该字段,它不会包含在帖子变量中。 Disabled form fields are not submitting data

      【讨论】:

        【解决方案5】:

        要使用 JavaScript 提交表单,请使用 myForm.submit(); 要排除该字段,请删除名称。如果出于某种原因需要引用该字段,您可以保留一个 ID。或者 - 您可以在服务器端完全忽略该字段。

        【讨论】:

          【解决方案6】:

          只需将 form="nosubmit" 添加到输入中。 这会将字段完全分配给不同的表单,因此不会被提交。

          【讨论】:

          • 在大多数情况下不是我的首选,但非常聪明。这可能是某人的正确答案。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-08-14
          • 1970-01-01
          • 2010-11-08
          • 2011-12-24
          • 2014-07-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多