我有一个基本的客户信息表单,我想让它更具互动性。想法是,如果用户选择不是美国或加拿大的国家,则状态选择将变为状态文本框。我确信这可以用php完成但是已经使用jquery进行了辩论但是如果可能的话我想避免使用它。这是我的表格样本:
<tr>
<td>
<input name="city" type="text" id="city" value="<?= $this->aBillingProf['cCity']; ?>" />
</td>
<td>
<select name="state" id="state" style="width:218px;position:relative;top:-4px;">
<? $s = strlen($this->aBillingProf['cState']) == 2 ? strtoupper($this->aBillingProf['cState']) : strtoupper(stateTranslate($this->aBillingProf['cState']));
echo stateSelect('both',$s); ?>
</select>
<input name="state" type="text" id="state" value="<?= $this->aBillingProf['cState']; ?>" />
/*The Idea being only one of the above options is available depending on what is selected from the country select */
</td>
</tr>
<tr>
<td>
<label for="zip">Zip / Postal Code</label>
</td>
<td>
<label for="country">Country</label>
</td>
</tr>
<tr>
<td>
<input name="zip" type="text" id="zip" maxlength="6" value="<?= $this->aBillingProf['cZip']; ?>" />
</td>
<td>
<select name="country" id="country" style="width:218px;position:relative;top:-4px;">
<?= AffiliateStore::countrySelect($this->aBillingProf['cCountry']); ?>
</select>
<!-- <input type="text" name="country" id="country" value="<?= $this->aBillingProf['cCountry']; ?>" /> -->
</td>
</tr>
感谢您的任何输入或建议
答案 0 :(得分:1)
基本上我所做的是添加一个包含我需要的输入的div。在这种情况下,我会使用美国和加拿大国家的选择框和其他国家的文本输入。使用CSS diplay:none可以折叠除默认选定国家/地区之外的所有div。
<div id="state_inputs">
<div id="us_states_div">
<!-- Select box for US states goes here -->
</div>
<div style="display:none" id="ca_states_div">
<!-- Select box for US states goes here -->
</div>
<div style="display:none" id="other_states_div">
<input type="text" name="other_states" />
</div>
</div>
现在假设您所在国家/地区的选择框的ID为country_select:
<script>
document.getElementById("country_select").onchange = function() {
var country_select = document.getElementById("country_select");
var country = country_select.options[country_select.selectedIndex].text;
if(country == "USA") {
document.getElementById("us_states_div").style.display="block";
document.getElementById("ca_states_div").style.display="none";
document.getElementById("other_states_div").style.display="none";
} else if(country == "Canada") {
document.getElementById("us_states_div").style.display="none";
document.getElementById("ca_states_div").style.display="block";
document.getElementById("other_states_div").style.display="none";
} else {
document.getElementById("us_states_div").style.display="none";
document.getElementById("ca_states_div").style.display="none";
document.getElementById("other_states_div").style.display="block";
}
};
</script>
一旦您更新了PHP以输出该标记,在处理方面,您只需查看所选国家/地区,然后使用正确状态输入中包含的值。
答案 1 :(得分:0)
仅使用PHP无法实现这一点,因为它要求您使用客户端脚本来确定事件何时被触发。但是,您可以使用PHP重建表单,这需要从服务器重新加载。使用JavaScript处理事件和更新表单要容易得多。