我有一个占位符值输入框,由于它被jQuery控制,因此在页面加载时设置为display:none;
,并在选择Placeholder下拉框时显示。
我的问题是我已经对表单使用了Codeigniter验证,如果我在表单上有错误,页面重新加载Placeholder下拉框,则表示是,但占位符值输入框将消失。
我最好的办法是创建一个callback_函数,基本上说明如果选择yes是否显示输入框?
jQuery的:
$("#add_fields_placeholder").change(function()
{
if($(this).val() == "yes")
{
$('label[for="add_fields_placeholderValue"]').show();
$("#add_fields_placeholderValue").show();
}
else
{
$('label[for="add_fields_placeholderValue"]').hide();
$("#add_fields_placeholderValue").hide();
}
});
查看:
<label for="add_fields_placeholder">Placeholder: </label>
<select name="add_fields_placeholder" id="add_fields_placeholder">
<option value="">Please Select</option>
<option value="yes" <?php echo set_select('add_fields_placeholder','yes', ( !empty($placeholderType) && $placeholderType == "yes" ? TRUE : FALSE ));?>>Yes</option>
<option value="no" <?php echo set_select('add_fields_placeholder','no', ( !empty($placeholderType) && $placeholderType == "no" ? TRUE : FALSE ));?>>No</option>
</select>
<label for="add_fields_placeholderValue">Placeholder Text: </label>
<input type="text" name="add_fields_placeholderValue" id="add_fields_placeholderValue" value="<?php echo set_value('add_fields_placeholderValue'); ?>">
控制器验证:
$this->form_validation->set_rules('add_fields_placeholder', 'Placeholder', 'trim|required|xss_clean|callback_dropdown_check');
$this->form_validation->set_rules('add_fields_placeholderValue', 'Placeholder Text','trim|xss_clean');
答案 0 :(得分:1)
加载页面时,您需要触发add_fields_placeholder
的更改。只需确保选择了yes选项。代码将类似于:
function initChangeEvent() {
$("#add_fields_placeholder").change(function() {
if($(this).val() == "yes") {
$('label[for="add_fields_placeholderValue"]').show();
$("#add_fields_placeholderValue").show();
} else {
$('label[for="add_fields_placeholderValue"]').hide();
$("#add_fields_placeholderValue").hide();
}
});
}
$(function(){
initChangeEvent();
$("#add_fields_placeholder").trigger('change');
})
答案 1 :(得分:0)
您也可以将此代码放在document.ready函数中。它会起作用
if( $("#add_fields_placeholder").val() == "yes")
{
$('label[for="add_fields_placeholderValue"]').show();
$("#add_fields_placeholderValue").show();
}
else
{
$('label[for="add_fields_placeholderValue"]').hide();
$("#add_fields_placeholderValue").hide();
}
});