PHP验证和隐藏下拉框
我有一个占位符值输入框,设置为PHP验证和隐藏下拉框,php,codeigniter,Php,Codeigniter,我有一个占位符值输入框,设置为display:none页面加载,因为它受jQuery控制 我的问题是,我已经对表单使用了Codeigniter验证,如果表单上有错误,页面将重新加载占位符下拉框,该框表示是,但占位符值输入框将消失 我的最佳选择是创建一个回调函数,该函数基本上表示如果选择了yes,则显示输入框 jQuery: $("#add_fields_placeholder").change(function() { if($(this).v
display:none当占位符下拉框选择为“是”时,会显示代码>页面加载,因为它受jQuery控制
我的问题是,我已经对表单使用了Codeigniter验证,如果表单上有错误,页面将重新加载占位符下拉框,该框表示是,但占位符值输入框将消失
我的最佳选择是创建一个回调函数,该函数基本上表示如果选择了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');
查看:
$("#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');
加载页面时,您需要触发添加字段\u占位符的更改。只需确保选择了“是”选项。代码将类似于:
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');
})
您还可以将此代码放入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();
}
});
我想您需要检查下拉列表的实际状态,因此每次加载页面时,您都会检查状态并对其他字段进行必要的更改。我认为这个问题与PHP无关,因为没有PHP错误,所以如果我没弄错的话,请您更改标记好吗?=)您使用javascript显示隐藏字段?如果是这样,您只需要在加载页面时调用它;)@塞尔乔米切尔,你能给我举个例子吗?我好像拿不到一个,我想这是最好的case@JessMcKenzie请发布显示隐藏字段的代码。选择“是”时,似乎没有加载输入框否错误仍然没有为您显示输入?我刚刚尝试了链接,它工作了。当选择“是”时,它似乎没有加载输入框无错误