JQuery功能不起作用 - 有时候

时间:2011-10-08 13:01:38

标签: php jquery codeigniter relative-path

我有2个相同的代码块,当它首先从控制器中的索引加载时它可以工作,但是当我提交表单并加载此代码时,我的自动完成功能不适用于某个字段。

<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>public/blue.css" />
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/themes/base/jquery-ui.css" />    
<script type="text/javascript" src="<?php echo base_url(); ?>public/jquery-1.6.1.js"></script>    
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.js"></script>
<script type="text/javascript">

        $(document).ready(function() {
            alert('workin');


            //$(".publish-bottom").hide();
            $(".publish-right").hide();



            //title field
            $.ajax({

                type: "GET",
                cache: false,
                dataType: 'json',
                url: "publishlinks/search_movies",
                success:
                    function(response) {

                        alert('response received');
                        alert(response);

                        $("#title").autocomplete({
                            source: response,
                            minLength: 2,
                            select: function (event, ui) {

                                var selectedObj = ui.item;
                                var imgFilename = ui.item;                              
                                imgFilename = imgFilename.value;
                                imgFilename = imgFilename.replace(/ /g,"_");

                                $(".selected-right").empty();
                                $(".selected-left").empty();
                                $(".publish-right").show();

                                //render selected media
                                $(".selected-left").append('<a href="<?php echo "#"; ?>"> <img class="movie-img" src="<?php echo base_url(); ?>img_test/' + imgFilename + '"></a>');
                                $(".selected-right").append('<h4>' + selectedObj.title + '</h4>');
                                $(".selected-right").append(selectedObj.plot);

                                //update publication id  
                                $("#movieId").attr("value", selectedObj.movieid);
                                $("#selected-item").attr("value", "selected");

                                $(".new-movie").show();

                                //get selected item's publications
                                getPublications(selectedObj);

                            }

                        }).data( "autocomplete" )._renderItem = function( ul, item ) {

                            var imgFilename = item.label;
                            imgFilename = imgFilename.replace(/ /g,"_");

                            return $( "<li></li>" )
                                .data( "item.autocomplete", item )
                                .append( '<a>' + '<img src="http://localhost/portal/img_test/' + imgFilename + '" width="40" height="63" />' + item.title + '</a>' )
                                .appendTo(ul);
                        }

                    }

             });

        });

</script>

function search_movies() {

    $movies = $this->movie_model->get_movies();     
    echo json_encode($movies);

}

//works fine    
function index() {

            $this->load->model('user_model');
            $data['user'] = $this->user_model->get_user($this->session->userdata('userid'));

            $data['loggedIn'] = $this->is_logged_in() ? true : false;
            $this->load->view('header_view', $data);
            $this->load->view('publish_links_view');

}

表单提交代码:

            //Not working for autocomplete
            $error['linksError'] = 'You must select an item to publish links for.';         

            $data['user'] = $this->user_model->get_user($this->session->userdata('userid'));
            $data['loggedIn'] = $this->is_logged_in() ? true : false;
            $this->load->view('header_view', $data);
            $this->load->view('publish_links_view', $error);

1 个答案:

答案 0 :(得分:2)

我同意user555116,我们没有足够的信息。但我确实看到你的代码存在一个问题。这可能是问题,可能不是。你可以在这个块中定义你的函数:

$(function() {

});

那么,这是简短的形式:

$(document).ready(function() {


});

对于这两个块,所有jquery都会将代码保存在这些块中。当jquery收到DOM加载的事件时,它按照您将其发送到jquery的顺序运行每个函数。而且,这些功能中的每一个都不会隐式地访问另一个。除非您以某种方式创建对doc ready块中定义的函数的引用,否则它们将在块执行后消失。但是,在这种情况下,更简单(也更正确)的解决方案是简单地从$(function() { })中删除函数定义。