1

以下のコードは、ここからの Codeigniter イベント カレンダー機能です。

カレンダーはクリック可能で、「プロンプト」ボックスから日付フィールドにデータを入力できます。データは、カレンダーの日付フィールドに表示されます。

ただし、「プロンプト」ボックスではなく、「スピナー」を入力フィールドとして JQUERY の「ダイアログ」ボックスを使用しようとしています。

以下のすべてのコードは、AJAXを使用してデータをPOSTしようとしているときに、最後にJQUERYセクションを完全に受け入れて機能しています。Codeigniter は、ダイアログ ボックスから POST データを検出できません。

誰でも助けてもらえますか?

     //CONTROLLER

    class Mycal extends CI_Controller {

    public function index() {
       $this->display();
    }

    function display($year = null, $month = null){

    if (!$year) {
        $year = date('Y');
    }
    if (!$month) {
        $month = date('m');
    }

    $this->load->model('Mycal_model');

    if($day = $this->input->post('day')){
        $this->Mycal_model->add_calendar_data(
            "$year-$month-$day",
            $this->input->post('data')
        );
    }

    $data['calendar'] = $this->Mycal_model->generate($year, $month);

    $this->load->view('mycal_view', $data); 
}

}

    //MODEL

    class Mycal_model extends CI_Model{

    function get_calendar_data($year, $month){

    $query = $this->db->select('date, data')->from('calendar')
        ->like('date', "$year-$month", 'after')->get();

    $cal_data = array();

    foreach ($query->result() as $row){
        $cal_data[substr($row->date,8,2)] = $row->data;
    }

    return $cal_data;
}

function add_calendar_data($date, $data){

    if($this->db->select('date')->from('calendar')
        ->where('date', $date)->count_all_results()) {

        $this->db->where('date', $date)->update('calendar', array(
            'date'=>$date,
            'data'=>$data
        ));

    }else{

        $this->db->insert('calendar', array(
            'date'=>$date,
            'data'=>$data
        ));
    }
}

function generate ($year, $month){

    $this->load->library('calendar', $this->conf);
    $cal_data = $this->get_calendar_data($year, $month);    
    return $this->calendar->generate($year, $month, $cal_data)      
}


    //VIEW

    <?php echo $calendar; ?>

    <div id="dialog-form" title="Select number of items">

    <p>
        <label for="spinner">Number of items:</label>
        <input id="spinner" name="spinner" value="0" />
    </p>

    </div>

    //JQUERY

    <script type="text/javascript">

$(document).ready(function() {

    $(function() {
        $( "#spinner" ).spinner({
            min: 0,
            max: 10,
            step: 1,
        });
    });

    $('.calendar .day').click(function() {
        $('#dialog-form').dialog("open");
    }); 

    $(function() {  
        $('#dialog-form')
            .attr('title', 'Number of items')
            .dialog({ 
                autoOpen: false,
                buttons: { 
                    'Ok': function() {
                        day_num = $(this).find('.day_num').html();
                        day_data = $("#spinner").val();


                            $.ajax({
                                url: window.location,
                                type: 'POST',
                                data: {
                                    day: day_num,
                                    data: day_data
                                },
                                success: function(msg){
                                    location.reload();
                                }
                            })      
                    },

                },

            });

    });
}); 
</script>
4

1 に答える 1

1

問題を解決する方法を見つけてくれてありがとう。これが私のコードです。

//JQUERY

    <script type="text/javascript">

$(document).ready(function() {
    $('.calendar .day').click(function() {
      $('#dialog-form').dialog("open");

      day_num = $(this).find('.day_num').html();
      day_data = $("#spinner").val();
    });


    $(function() {
        $( "#spinner" ).spinner({
            min: 0,
            max: 10,
            step: 1,
        });
    });



    $(function() {  
        $('#dialog-form')
            .attr('title', 'Number of items')
            .dialog({ 
                autoOpen: false,
                buttons: { 
                    'Ok': function() {

                            $.ajax({
                                url: window.location,
                                type: 'POST',
                                data: {
                                    day: day_num,
                                    data: day_data
                                },
                                success: function(msg){
                                    location.reload();
                                }
                            })      
                    },

                },

            });

    });
}); 
</script>
于 2013-01-03T04:56:19.117 に答える