2012-08-14 114 views
0

我有一个占位符值输入框,在页面加载时设置为display:none;,因为它受jQuery控制,并显示何时占位符下拉框被选中为yes。PHP验证和隐藏的下拉框

我的问题是我对表单使用了Codeigniter验证,如果我在表单上有错误,页面重新加载占位符下拉框状态为yes,但占位符值输入框消失。

我最好打赌是创建一个callback_函数,基本上声明是否选择是显示输入框?

的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

我想你需要检查'dropdown'的实际状态,所以每次你的页面加载时,你都会检查状态并对其他字段进行必要的更改。我认为这个问题不是PHP相关的,因为没有PHP错误,所以如果我没有弄错,你可以改变标签吗? =) – Gerep 2012-08-15 00:20:25

+0

你用javascript来显示隐藏字段?如果是这样,你只需要在页面加载时调用它;) – 2012-08-15 01:21:47

+0

@SérgioMichels你能否给我提供一个例子,看起来我无法得到一个http://stackoverflow.com/questions/11961248/setting-an- onchange-event-when-the-browser-reloads我认为这是这种情况 – 2012-08-15 01:59:42

回答

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'); 
}) 
+0

当选择yes时,似乎没有加载输入框无错误 – 2012-08-15 20:19:46

+0

$(this).val()返回什么?把警报看到值... – 2012-08-15 20:34:50

+0

仍然没有运气:http://jsfiddle.net/eGKrM/ – 2012-08-15 23:03:26

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(); 
} 
    }); 
+0

选择“是”时,似乎无法加载输入框,但没有错误 – 2012-08-15 20:20:23