0

display:none;jQuery で制御されているためにページの読み込み時に設定されているプレースホルダー値入力ボックスがあり、プレースホルダー ドロップダウン ボックスが [はい] に選択されている場合に表示されます。

私の問題は、フォームに Codeigniter Validation を使用したことです。フォームにエラーがある場合、ページがリロードされ、プレースホルダー ドロップダウン ボックスには「はい」と表示されますが、プレースホルダー値入力ボックスは消えます。

私の最善の策は、「はい」が選択されている場合に入力ボックスを表示することを基本的に述べる 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');
4

2 に答える 2

1

ページが読み込まれたら、 の変更をトリガーする必要がありますadd_fields_placeholder。はいオプションが選択されていることを確認してください。コードは次のようになります。

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');  
})
于 2012-08-15T03:04:56.920 に答える
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();
}
    });
于 2012-08-15T09:27:52.333 に答える