2012-08-14 80 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