已禁用单选按钮值丢失并传递最后一个隐藏的输入值

时间:2013-09-17 00:59:25

标签: php html wordpress wordpress-plugin

在我正在开发的Wordpress插件中,我正在使用WordPress设置API。在我用来显示包含单选按钮的设置的回调中,我启用它们并根据复选框值禁用它们。无论如何,我试图使用一个隐藏的输入来存储它们的值,即使它们被禁用但是这使情况变得更糟,因为它总是占用最后一个隐藏输入的值,在我的情况下是“4”。

if(get_option( 'display_style' ) == 2){
$disabled = 'disabled';
}
$html = '<input type="radio" id="onecolumn" class="cardchecked" name="card_columns" value="1"' . checked( 1, get_option( 'card_columns' ), false ) . $disabled . '/>';  
$html .= '<input type="hidden" name="card_columns" value="1" />';  
$html .= '<label for="onecolumn">One</label>';  

$html .= '<input type="radio" id="twoclumn" class="cardchecked" name="card_columns" value="2"' . checked( 2, get_option( 'card_columns' ), false ) . $disabled . '/>';  
$html .= '<input type="hidden" name="card_columns" value="2" />';  
$html .= '<label for="twoclumn">Two</label>';  

$html .= '<input type="radio" id="threecolumn" class="cardchecked" name="card_columns" value="3"' . checked( 3, get_option( 'card_columns' ), false ) . $disabled . '/>';  
$html .= '<input type="hidden" name="card_columns" value="3" />';  
$html .= '<label for="threecolumn">Three</label>';  

$html .= '<input type="radio" id="fourcolumn" class="cardchecked" name="card_columns" value="4"' . checked( 4, get_option( 'card_columns' ), false ) . $disabled . '/>';  
$html .= '<input type="hidden" name="card_columns" value="4" />';  
$html .= '<label for="fourcolumn">Four</label>';  
echo $html;

1 个答案:

答案 0 :(得分:1)

隐藏输入name不能与收音机输入name相同,因为它的值是常量,并且将覆盖具有相同name的任何先前输入的值。

if(get_option( 'display_style' ) == 2){
$disabled = 'disabled';
}
$html .= '<input type="hidden" name="card_columns" value="1" />'; 
$html = '<input type="radio" id="onecolumn" class="cardchecked" name="card_columns" value="1"' . checked( 1, get_option( 'card_columns' ), false ) . $disabled . '/>';    
$html .= '<label for="onecolumn">One</label>';  
...

您必须使用javascript设置隐藏输入字段的值。 在收音机顶部放置一个隐藏的输入将确保如果禁用单选按钮以提交隐藏输入的值,但如果启用了单选按钮,则它们将覆盖隐藏输入的值。