2

我是使用 Jquery 的新手,所以请原谅我的无知。我从本地 mysql 数据中创建了一个动态列表,当用户选择列表中的一个值时,我希望一些选定的信息出现在文本框中。我成功地收集了我需要的信息并将值设置为各种属性标签。但是,当我最终获得附加到文本框的值之一时,它会说

“[对象对象]”

在文本框中。我阅读了有关将其转换为文本的信息,但似乎无法弄清楚在我的示例练习中究竟需要去哪里。我想知道是否有人可以帮助我?

呈现信息并将值设置为文本框的代码示例如下:

    <script type="text/javascript">
    $(document).on('pagebeforeshow', '#index', function(){
        $("#list").empty();
        var url="http://localhost/test/login/json4.php";
        $.getJSON(url,function(json){
            //loop through deals
            $.each(json.deals,function(i,dat){
                $("#list").append("<li><a id='"+dat.dealid+"' data-restaurantid=" + dat.restaurantid + " data-image=" + dat.image + "><h1>"+dat.name+"</h1><p>"+dat.dname+"</p></a></li>");
                $(document).on('click', '#'+dat.dealid, function(event){  
                    if(event.handled !== true) // This will prevent event triggering more then once
                    {
                        dealObject.dealID = $(this).attr('id'); 
                        dealObject.restaurantid = $(this).attr('data-restaurantid');
                        dealObject.name = $(this).find('desc').eq(0).val(this);

                        $.mobile.changePage( "#index2", { transition: "slide"} );
                        event.handled = true;
                    }
                });            
            });
            $("#list").listview('refresh');
        });
    });

    $(document).on('pagebeforeshow', '#index2', function(){       

        $('#index2 [data-role="content"]').find('input#desc').val(dealObject.name);


    });

    var dealObject = {
        dealID : null,
        restaurantid : null,
        name : null,
        image : null,
        dname : null
    }    
</script>

这就是我要展示它的地方:

<form id="test">
        <label for="desc">Description</label>
        <input type="text" value="" name="desc" id="desc"/>  
        <a data-role="button" id="submit-button" data-theme="b">Submit</a>

如果有人可以帮助我,我会非常感激。提前致谢!

4

2 回答 2

1

您的主要问题是 dealObject 中的 name 属性,name 是一个特殊词,不能用作对象属性名称。

在您的情况下,您将其添加到正确的输入中,但 dealObject.name 不存在。由于 jQuery Mobile 的工作方式,即使是空元素也会返回“[object Object]”。

于 2013-02-20T14:33:19.940 回答
0

您正在尝试将文本的值设置val(this)this 来自each

如果你想得到你可以说的价值

 dealObject.name = $(this).find('desc').eq(0).val();

如果您正在分配一个值

dealObject.name = $(this).find('desc').eq(0).val('My Value');
or 
dealObject.name = $(this).find('desc').eq(0).val(this.something);

所以你的代码

    <script type="text/javascript">
    $(document).on('pagebeforeshow', '#index', function(){
        $("#list").empty();
        var url="http://localhost/test/login/json4.php";
        $.getJSON(url,function(json){
            //loop through deals
            $.each(json.deals,function(i,dat){
                $("#list").append("<li><a id='"+dat.dealid+"' data-restaurantid=" + dat.restaurantid + " data-image=" + dat.image + "><h1>"+dat.name+"</h1><p>"+dat.dname+"</p></a></li>");
                $(document).on('click', '#'+dat.dealid, function(event){  
                    if(event.handled !== true) // This will prevent event triggering more then once
                    {
                        dealObject.dealID = $(this).attr('id'); 
                        dealObject.restaurantid = $(this).attr('data-restaurantid');
                        dealObject.name = $(this).find('desc').eq(0).val();

                        $.mobile.changePage( "#index2", { transition: "slide"} );
                        event.handled = true;
                    }
                });            
            });
            $("#list").listview('refresh');
        });
    });

    $(document).on('pagebeforeshow', '#index2', function(){       

        $('#index2 [data-role="content"]').find('input#desc').val(dealObject.name);


    });

    var dealObject = {
        dealID : null,
        restaurantid : null,
        name : null,
        image : null,
        dname : null
    }    
</script>

我希望这可以帮助

于 2013-02-19T12:21:50.967 回答