0

動的に作成されたフォーム フィールドを ajax 経由で CodeIgniter に送信しています。

    <div class="form-element">
        <input type="radio" id="delete-radio[1]" name="delete-radio[1]" value="1">
    </div>

    <div class="form-element">
        <label for="member_id[1]">Membership ID</label>
        <input type="text" id="member_id[1]" name="member_id[]" autocomplete="off" value="<?php echo set_value('member_id[1]'); ?>"/>
        <?php echo form_error('member_id[1]', '<div class="error">', '</div>'); ?>
    </div>

    <div class="form-element">
        <label for="member_name[1]">Name</label>
        <input type="text" id="member_name[1]" name="member_name[]" autocomplete="off" value="<?php echo set_value('member_name[1]'); ?>"/>
        <?php echo form_error('member_name[1]', '<div class="error">', '</div>'); ?>
    </div>

    <div class="form-element">
        <label for="member_address[1]">Address</label>
        <input type="text" id="member_address[1]" name="member_address[]" autocomplete="off" value="<?php echo set_value('member_address[1]'); ?>"/>
        <?php echo form_error('member_address[1]', '<div class="error">', '</div>'); ?>
    </div>

以下を使用して、それらをコントローラーに送信します。

$('#submit').click(function() {
    var form_data = $('#ajax-form').serialize();
    alert(form_data);

    $.ajax({
        url: "<?php echo site_url('ajax_ci/ajax_check'); ?>",
        type: 'POST',
        async : false,
        data: form_data,
        success: function(msg) {
            $('#form-name').append(msg);
        }
    });
    return false;
});

コントローラーは次のとおりです。

if ($this->input->is_ajax_request()) {
    $this->form_validation->set_rules('member_id[]', 'member ID', 'trim|required|xss_clean');
    $this->form_validation->set_rules('member_name[]', 'member name', 'trim|required|xss_clean');
    $this->form_validation->set_rules('member_address[]', 'member password', 'trim|required|xss_clean');

    if($this->form_validation->run() == FALSE) {
        echo validation_errors();       
    } else {
        // connect to database
    }

} else {
    echo "Work on it! Don't give up!";
}

以下のスクリーンショットは現在起こっていることです。 ここに画像の説明を入力 しかし、私はこれらのエラーがそれぞれの個人に現れることを望みますform_errors ここに画像の説明を入力

これは私の現在の設定で可能ですか?

4

1 に答える 1

1

サーバーから返される検証エラーには、失敗したフィールドに関する情報を含める必要があります。おそらく (fieldname=>errormsg) の配列です。その後、ajax 応答ハンドラーは正しいフィールドを見つけ、それに応じてメッセージを DOM に追加できます。

于 2013-02-12T02:26:32.620 に答える