【问题标题】:How do I exclude certain form fields upon submission of the form without disabling the field如何在提交表单时排除某些表单字段而不禁用该字段
【发布时间】:2011-02-02 01:41:49
【问题描述】:

如果我有一个包含以下 3 个字段的表单:

名字姓氏出生日期

当用户填写所有 3 个字段并提交时,您将获得 URL

http: //fakeURL.php?firstName=Fred&lastName=Flintstone&DateOfBirth=2/5/1952

但是,如果用户只填写名字和出生日期,你会得到

http: //fakeURL.php?firstName=Fred&lastName=&DateOfBirth=2/5/1952 (where lastName has no value)

如何实现

http: //fakeURL.php?firstName=Fred&DateOfBirth=2/5/1952 (where lastName and value are removed from the URL)

我不想在使用 onsubmit 时禁用输入字段。有没有比禁用输入字段更好的方法?

请帮忙...

【问题讨论】:

  • 为什么您不想在“提交”处理程序中禁用该字段?
  • 为什么该字段为空很重要?无论如何,您是否考虑过使用 POST 而不是 GET,以便您的 URL 更清晰,并且您的更多实现对访问者隐藏。

标签: php javascript ajax


【解决方案1】:

只需从输入元素中删除“名称”属性即可。

// using jQuery
$('#inputId').removeAttr('name');

// native Javascript
document.getElementById('inputId').removeAttribute('name');

【讨论】:

  • 这是一个伟大而简单的解决方案。谢谢!
  • 这比最佳答案简单得多,并且非常适用于某些输入仅以某种方式帮助用户并且不需要提交的情况(在这种情况下,我们根本不给首先是name)。
  • Demo(使用开发者控制台的网络面板检查发送的请求,应该是?sent=foo)。
  • 如果没有name 属性,某些类型的输入(例如radio)将无法正常工作。
【解决方案2】:

您必须:

  1. 在提交之前从表单中删除或禁用该字段
  2. 不要提交表单,而是重定向到您自己根据表单构建的 URL
  3. 发出 AJAX 请求而不是离开页面

除了这些选项之外,如果所有输入都成为 URL 的一部分,您将无法通过 GET 提交此表单。这是 HTML 和 HTTP 规范的一部分。

【讨论】:

    【解决方案3】:

    您应该使用带有GET 方法的表单,当新页面应该被添加书签并被传递时。

    既然您说的是从用户那里获取输入(我假设您也将该输入存储在数据库或类似的永久存储中),您应该使用POST 而是

    【讨论】:

    • 告诉 WordPress。
    • 从用户那里获取输入并使用get 方法发送它没有任何问题。如果用户要刷新页面,将输入保存在地址栏中也对用户有利。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 2010-11-14
    • 2019-04-10
    • 2021-08-04
    相关资源
    最近更新 更多