如何让浏览器有选择地忽略表单上的HTML5必需属性

时间:2011-05-19 09:12:35

标签: forms html5 required

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:2)

我想我看到了你的问题。我不相信HTML中有任何内容可以让您指定更复杂的验证规则。我想你必须要么:

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

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

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

答案 1 :(得分:1)

页面中是否有嵌套表单?第一个表单标记不能在嵌套表单中工作,如下所示。在这种情况下,使用空表单标记以避免错误。并且不要使用form.filed {}

开始的带有表单标记的类
<form>
main form
<form> </form>
<form> form1 </form>
<form> form2 </form>

</form>