我已经得到了这行允许用户输入状态的代码;
<input id="location-state" type="text" maxlength="2" name="location_state" value="<?php echo esc_attr($EM_Location->location_state, ENT_QUOTES); ?>" />
但是,我想把它变成一个下拉选择。现在我想到的一种方法是使用php获取选择选项值并将其添加到上述输入中,然后将输入隐藏起来,不让用户看到它。
不知道从哪里开始,我试着做以下测试,但没有工作;
<select>
<option value="<?php echo esc_attr($EM_Location->location_state, 'AL'); ?>">Alabama</option>
<option value="<?php echo esc_attr($EM_Location->location_state, 'AK'); ?>">Alaska</option>
<option value="<?php echo esc_attr($EM_Location->location_state, 'AZ'); ?>AZ">Arizona</option>
<option value="<?php echo esc_attr($EM_Location->location_state, 'AR'); ?>AR">Arkansas</option>
<option value="<?php echo esc_attr($EM_Location->location_state, 'CA'); ?>CA">California</option>
</select>
它确实有效,但只适用于阿拉巴马州…
$values = array(
'AL' => 'Alabama',
'AK' => 'Alaska',
'AZ' => 'Arizona'
...
);
echo '<select id="location-state" name="location_state">';
foreach( $values as $key => $value )
{
$selected = $key == $EM_Location->location_state ? 'selected="selected"' : '';
echo '<option value="'.$key.'" '.$selected.'>'.$value.'</option>';
}
echo '</select>';
您需要删除输入标记,并为select标记提供与输入相同的属性名称。删除:
<input id="location-state" type="text" maxlength="2" name="location_state" value="<?php echo esc_attr($EM_Location->location_state, ENT_QUOTES); ?>" />
并加上:
<select name="location_state">
<option value="<?php echo esc_attr($EM_Location->location_state, 'AL'); ?>">Alabama</option>
<option value="<?php echo esc_attr($EM_Location->location_state, 'AK'); ?>">Alaska</option>
<option value="<?php echo esc_attr($EM_Location->location_state, 'AZ'); ?>AZ">Arizona</option>
<option value="<?php echo esc_attr($EM_Location->location_state, 'AR'); ?>AR">Arkansas</option>
<option value="<?php echo esc_attr($EM_Location->location_state, 'CA'); ?>CA">California</option>
</select>