2011-05-19 22 views
2

我有一個標準的HTML表單,它使用fieldset元素分成兩部分。一部分是輸入姓名,電子郵件地址等,第二部分是輸入地址自動完成功能的郵編(第二部分郵政編碼查詢字段沒有必需的屬性)。如何讓瀏覽器選擇性地忽略表單上的HTML5必需屬性

每個部分都有自己的提交按鈕。第一部分中的每個字段都有一個帶有HTML5必需屬性的表單字段。

我的問題是,當用戶在郵政編碼查找字段中輸入郵政編碼而不在第一部分輸入任何內容時,表單中的所有字段都會在不支持該屬性的瀏覽器中提交(例如Firefox 3.6)。在Firefox 4中(例如),它支持必需的屬性,並且在具有必需屬性的空字段時阻止提交表單。但是,這會破壞我對錶單的錯誤檢查和驗證(服務器端,PHP)的實現。

那麼,有沒有辦法告訴瀏覽器(在這種情況下)忽略第一節的提交按鈕被按下時,第一節的「必需」屬性?

我知道這可能違背了必需的屬性,但我已經構建了表單,因此它不必按特定順序完成,即用戶可以選擇完成郵政編碼查找字段在輸入他們的個人詳細信息之前,但所需的屬性目前強制用戶以某種方式完成表單,而不必這樣做。

此外,任何解決方案必須能夠在沒有JavaScript的情況下工作。請不要提及任何主張用Ajax替換郵政編碼查找部分的答案,我已經決定這不是一個允許的選項。

回答

2

我想我看到你的問題。我不相信HTML中有任何東西可以讓你指定這個更復雜的驗證規則。我認爲您必須:

  1. 將這些字段集拆分爲兩個單獨的頁面形式;

  2. 在兩個不同的頁面上使用兩個單獨的窗體;或

  3. 重新編寫您的服務器端代碼,以便在用戶提交郵政編碼時,非郵政編碼表單字段僅包含required屬性。

+0

1.我避免這一點,因爲如果用戶在一個單獨的「個人信息」表單中輸入他們的詳細資料後提交郵編形式,那些細節將會丟失(不會被髮布,也不會被捕獲),這對用戶來說是非常煩人的。 – sfrost2004 2011-05-20 10:04:25

+0

2.我認爲這可能是「最好的」js-free解決方案。 – sfrost2004 2011-05-20 10:06:24

+0

3.不知道這將如何工作 - 你是否建議在郵遞區號表格提交後才添加必要的屬性?這是一個好主意,但是如何在沒有使用JavaScript重寫DOM的情況下工作呢? – sfrost2004 2011-05-20 10:08:46

1

頁面中是否有嵌套窗體?第一個窗體標籤不能在下面的嵌套窗體中使用。在這種情況下,使用空的表單標籤來避免錯誤。而且不寫類表單標籤開始像form.filed {}

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

</form>