2010-08-12 29 views
1

我的表單有一堆地址字段(街道,城市,國家,省,郵政編碼),需要一遍又一遍地填寫。爲了讓用戶更容易,我添加了「複製來自」選擇器,他們可以選擇他們以前使用過的地址。當他們這樣做時,表單字段將自動填入然後禁用。這樣他們可以清楚地看到他們要提交的內容。有條件的字段和禁用的輸入

問題是,如果字段被禁用,W3 says輸入將不會被提交。這很好,因爲我可以從選擇器獲取所需的所有數據,但現在表單驗證失敗。

我想我有兩個選擇:

  1. 重新啓用表單域剛剛提交表單之前(但是這是一個有點劈)
  2. 讓所有的地址字段可選。但是後來我需要添加一堆clean_方法,以確保它們實際上是當您不使用預設選擇器時填充。另外,我在整個網站上使用地址表單,並且在某些地方他們確實是必需的,所以我不希望將這些字段設置爲可選。雖然,我想我可以複製粘貼地址表單併爲此頁面創建一個特例。

想法?我應該採取什麼方法?

+0

只讀+的造型可能會在這裏工作得很好。 – mpen 2013-07-02 06:51:47

回答

1

一些想法。他們可能會給你一些想法。

  1. 如果用戶使用他們以前使用地址和他們不能編輯的形式(字段被禁用),他們需要一個地址的形式呢?你能否在沒有表格的情況下顯示以前的地址,並將其作爲隱藏參數傳遞給它?
  2. 如果用戶可以編輯以前選擇的地址(我認爲亞馬遜這樣做)那麼離開表單域是否可編輯是沒有意義的?
+0

(1)是的。地址表已經在那裏..他們可以跳過預設並開始填寫;強迫他們查看預設以決定他們是否要使用它,然後讓它出現......沒有任何意義,加上1行地址不如將零件分離爲形式確實;擁有禁用的元素更容易閱讀。 (2)否。地址保存在一個單獨的表格中;我希望禁用這些字段,以便我知道是否可以重新使用相同的FK,或者是否必須創建新的地址對象。如果他們想要使用預設*然後編輯它們,可以點擊--- – mpen 2010-08-12 05:05:05

+0

- 預設,然後回到「 - 選擇 - 」選項重新啓用輸入但保留值,然後編輯它對他們的心靈內容。 – mpen 2010-08-12 05:06:04

0

我一直在面對一個類似的問題,其中需要字段但它們的值是從另一個表單中提取的。我決定做的是以下幾點:

  1. 將類分配給所有需要,但不需要手動輸入
  2. 創建自動禁用從鍵盤或上下文菜單中的所有用戶輸入一個函數的輸入

這裏是我的解決方案:使用窗體

<head> 
<script src='file1.js'></script> 
</head> 

<body> 
<form method='post'> 
<input class='RequiredNoManual'> 
<input type='submit'> 
</form> 

</body> 
</html> 
HTML文件

JS文件

window.addEventListener('load', configureNoManualInputFields); 
function configureNoManualInputFields() 
{ 
    var elements = document.getElementsByClassName('RequiredNoManual'); 
    for(var i =0; i<elements.length; i++) 
    { 
     elements[i].oncut = function(){event.preventDefault();}; 
     elements[i].oncopy = function(){event.preventDefault();}; 
     elements[i].onkeydown = function(){event.preventDefault();}; 
     elements[i].onkeypress = function(){event.preventDefault();}; 
     elements[i].setAttribute('required', 'required'); 
    } 

}