2

我有一个标准的 HTML 表单,它使用 fieldset 元素分为两个部分。一部分是输入姓名、电子邮件地址等,第二部分是输入地址自动完成功能的邮政编码(第二部分中的邮政编码查找字段没有必需的属性)。

每个部分都有自己的提交按钮。第一部分中的每个字段都有一个带有 HTML5 必需属性的表单字段。

我的问题是,当用户在邮政编码查找字段中输入他们的邮政编码而不在第一部分输入任何内容时,表单中的所有字段都会在不支持此属性的浏览器中提交(例如 Firefox 3.6)。在 Firefox 4 中(例如),它尊重 required 属性,如果有带有 required 属性的空字段,它会阻止提交表单。但是,这破坏了我对表单的错误检查和验证的实现(服务器端,在 PHP 中)。

那么,当第二部分的提交按钮被按下时,有没有办法告诉浏览器(在这种情况下)忽略第一部分的“必需”属性?

我知道这可能与 required 属性的观点背道而驰,但我已经构建了表单,因此不必按特定顺序完成,即用户可以选择在输入他们的个人之前完成邮政编码查找字段详细信息,但 required 属性当前强制用户以某种方式完成表单,而没有必要这样做。

此外,任何解决方案都必须能够在没有 JavaScript 的情况下工作。请不要提及任何主张用 Ajax 替换邮政编码查找部分的答案,我已决定这是不允许的选项。

4

2 回答 2

2

我想我看到了你的问题。我不相信 HTML 中有任何东西可以让您指定这个更复杂的验证规则。我认为您必须:

  1. 将这些字段集拆分为页面上的两个单独的表单;

  2. 在两个不同的页面上使用两个单独的表格;或者

  3. 重新编写服务器端代码,以便非邮政编码表单字段仅required在用户提交邮政编码时包含该属性。

于 2011-05-19T09:57:19.457 回答
1

您的页面中是否有任何嵌套表单?第一个表单标签在嵌套表单中不起作用,如下所示。在这种情况下,使用空表单标签来避免错误。并且不要编写带有表单标签的类,例如 form.filed{}

<form>
main form
<form> </form>
<form> form1 </form>
<form> form2 </form>

</form>
于 2013-11-21T06:04:40.717 回答