2010-06-23 70 views
2

我有一個表單下拉框(50個州),通過一個PHP for循環填充(見下面的代碼)。用戶選擇住宅狀態,然後在表單中也必須選擇郵件狀態(如果兩者不同)。我在JavaScript中提供了一個複選框,當您選中時,將填入所有郵件信息以及已經在住宅信息部分輸入的信息。當選中該框時,除郵寄狀態以外的所有郵件信息字段都被禁用並且被讀取爲same as residential information。郵件狀態不會顯示爲same as residential information,因爲我沒有使用該選項填充它。有沒有什麼辦法可以用這個選項填充我的下拉框,以便用戶看不到它,但是當我想在代碼中使用它時它仍然可用?是否可以隱藏表單下拉列表(PHP,JavaScript)中的值?

  <label>Residental State</label><br/> 
      <select id="res_state" name="res_state"> 
       <?php 
        $states = array('Select State' , 'AA' , 'AE' , 'AK' , 'AL' , 'AP' , 'AR' , 'AS' , 'AZ' , 'CA' , 'CO' , 'CT', 'DE' , 'DC' , 'FL' , 'FM' , 'GA' , 'GU' , 'HI' , 'IA' , 'ID' , 'IL' , 'IN' , 'KS' , 'KY' , 'LA' , 'MA' , 'MD' , 'ME' , 'MH' , 'MI' , 'MN' , 'MO' , 'MP' , 'MS' , 'MT' , 'NC' , 'ND' , 'NE' , 'NH' , 'NJ' , 'NM' , 'NV' , 'NY' , 'OH' , 'OK' , 'OR' , 'PA' , 'PR' , 'PW' , 'RI' , 'SC' , 'SD' , 'TN' , 'TX' , 'UT' , 'VA' , 'VI' , 'VT' , 'WA' , 'WI' , 'WV' , 'WY'); 
        for($i = 0; $i < count($states); $i++){ 
         echo "<option>$states[$i]</option>"; 
        } 
       ?> 
      </select> 
+0

無關:考慮更改爲以一個foreach:'的foreach($狀態爲$狀態){回聲「」; }' – Charles 2010-06-23 19:55:07

+0

謝謝,我接受了你的建議,它看起來更乾淨。 – ubiquibacon 2010-06-24 08:25:10

回答

4

禁用所有窗體控件,並使用第一個窗體中的實際值填充它們。

這是用戶期望的典型行爲。如果您在任何地方編寫same as residential information,從用戶體驗的角度來看,您的網站看起來並不專業。

+0

我原本完成了你的建議,但如果用戶檢查'same as'框,然後返回並更改'住宿信息','郵件信息'不會更新。我試圖避免編寫另一個不斷檢查「住宅信息」字段值的函數。 – ubiquibacon 2010-06-23 19:56:28

+0

用戶知道這一點,在完成之前不會選中該框。如果你仍然擔心。只需將'onchange =「your_copy_method()」'添加到表單中的每個元素即可。這樣,任何時候表單上的內容都會發生變化,另一個就會更新。 – 2010-06-23 20:08:17

+0

哈哈,我不知道爲什麼我沒有想到這個!我認爲我將不得不做一些討厭的功能來每隔幾秒鐘檢查一次'住宅區'。我做了你的建議,它效果很好!非常感謝! – ubiquibacon 2010-06-23 20:17:04

0

而不是隱藏的選項,然後顯示它,你可以只用你的JavaScript添加:

theSel = document.getElementById('res_state'); 
theSel.options[theSel.length] = new Option('same as residential information', 'value');