我是新手使用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>
如果有人可以帮助我,我会非常感激。提前致谢!
答案 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>
我希望这可以提供帮助