object尝试将值设置为textbox时返回对象 - Jquery

时间:2013-02-19 12:10:06

标签: jquery ajax textbox

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

“[object Object]”

在文本框中。我读到了关于将其转换为文本的内容,但似乎无法弄清楚在我的示例练习中究竟需要进行哪些操作。我想知道是否有人可以帮助我?

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

    <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>

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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>

我希望这可以提供帮助