2010-06-23 32 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');