2013-02-19 36 views
2

我是使用Jquery的新手,所以原諒我的無知。 我已經從本地mysql數據製作了一個動態列表,當用戶選擇列表中的一個值時,我希望一些選定的信息出現在文本框中。我成功地收集了我需要的信息,併爲各種屬性標籤設置了值。然而,當我終於連接到它出現說object當試圖將值設置爲文本框時返回對象 - jquery

「的翻譯:」

在文本框中

一個文本框的值之一。我閱讀了關於將其轉換爲文本的內容,但似乎無法弄清楚我的示例練習中究竟需要做什麼。我想知道有人能幫我嗎?

這使得信息並設置值到文本框的代碼示例如下:

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

如果任何人都可以幫助我,我真的很感激。提前致謝!

回答

1

你的主要問題是dealObject裏面name屬性,名稱是一個特殊的詞,作爲一個對象的屬性名稱不能使用。

在你的情況下,你將它添加到正確的輸入,但dealObject.name不存在。並且由於jQuery Mobile的工作原理,即使空元素將返回「[object Object]」。

0

您正在嘗試設置文本val(this)thiseach

對象的值。如果你想獲得的價值可以說

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> 

我希望這可以幫助

+0

嗨@Sedz感謝您的回覆。 但是我仍然想出了相同的錯誤。我已經將.val()選項更改爲幾個不同的東西,而我似乎仍然在輸出'[Object,object]' – user2025934 2013-02-19 12:34:43

+0

在jsfiddle.net上進行演示 – Sedz 2013-02-19 12:36:11

+0

對不起,我實際上並不熟悉jsfiddle.net 我在我的本地主機上運行所有這些,所以我不認爲我能夠上傳數據? – user2025934 2013-02-19 12:42:24

相關問題