2010-11-16 83 views
85

如何正确地将某个值加载到使用jquery的文本框中?尝试了下面的代码,但得到[object Object]作为输出。请赐教,我是jquery的新手。如何在jquery中设置文本框的值

proc = function(x,y) { 
     var str1 = $('#pid').value; 
     var str2 = $('#qtytobuy').value; 
    var str3= $('#subtotal').load('compz.php?prodid=' + x + '&qbuys=' + y); 
    $('#subtotal').val(str3); 
    } 

而这里的HTML表单:

<form name="yoh" method="get"> 
Product id: <input type="text" name="pid" value=""><br/> 

Quantity to buy:<input type="text" name="qtytobuy" value="" onkeyup="proc(document.yoh.pid.value, this.value);"></br> 

Subtotal:<input type="text" name="subtotal" id="subtotal" value=""></br> 
<div id="compz"></div> 

</form> 
+0

什么是str3?它在哪里宣布?看起来你试图加载一个对象作为值,当你可能只需要该对象的一个​​属性时 – Fgblanch 2010-11-16 12:07:06

+0

对不起,忘了设置st3 = $('#subtotal')。load('compz.php?prodid ='+ x +'&qbuys ='+ y); – 2010-11-16 12:11:36

回答

138

我想你想设置的呼叫到URL 'compz.php?prodid=' + x + '&qbuys=' + y作为响应文本框的值是正确的?如果是这样,你需要做的是这样的:

$.get('compz.php?prodid=' + x + '&qbuys=' + y, function(data) { 
    $('#subtotal').val(data); 
}); 

参考:get()

你在你的代码中有两处错误:

  • load()HTML从阿贾克斯返回到指定元素:

    L从服务器提交数据并将返回的HTML放入匹配的元素中。

    您无法使用该方法设置文本框的值。

  • $(selector).load()返回一个jQuery 对象。当作为字符串处理时,默认情况下对象被转换为[object Object]

进一步澄清

假设你的URL返回5

如果你的HTML看起来像:

<div id="foo"></div> 

那么

$('#foo').load('/your/url'); 

结果将是

<div id="foo">5</div> 

但在你的代码,你有一个input元素。 理论上(它不是有效的HTML和你注意到不工作),等效调用将导致

<input id="foo">5</input> 

但你确实需要

<input id="foo" value="5" /> 

因此,您不能使用load()。你必须使用另一种方法,获得答案并将其设置为自己的价值。

+0

它真的变得更加困难,如果我只是想改变结果被加载的地方?我上面的代码是功能,当我加载到一个div。 – 2010-11-16 12:22:11

+1

@Ieyasu Sawada:那么,目前你正在向'$('#subtotal')。val(str3);'传递一个JavaScript对象,因为'load()'不能像你认为的那样工作。是的,您可以使用'load()'将文本或HTML加载到'div'中,而不是文本框的值。 – 2010-11-16 12:25:12

+0

感谢您的启发 – 2010-11-16 12:28:46

52

值是JavaScript的使用jQuery的语言,你应该使用

$('#pid').val() 

获取和

$('#pid').val('value') 

设置它。

http://api.jquery.com/val/

您的第二个问题。

我从来没有尝试过自动设置加载方法的html值,对不起。可以肯定,你可以这样做

$('#subtotal').load('compz.php?prodid=' + x + '&qbuys=' + y, function(response){ $('#subtotal').val(response); 
}); 

测试它,因为我手写编码;)

http://api.jquery.com/load/

+2

值得指出['val()'](http://api.jquery.com/val/)的相关[jQuery api](http://api.jquery.com/)页面,以供参考。 – 2010-11-16 12:09:29

+1

即使是太基本的指出,也许?只是我的愚见...无论如何更新! – Mauro 2010-11-16 12:13:11

+0

compz.php计算输入中2个数字的乘积。我猜加载计算值的部分:$('#subtotal')。load('compz.php?prodid ='+ x +'&qbuys ='+ y);被视为对象,这就是为什么我将对象对象看作输出,那么我怎样才能将它转换为正常值 – 2010-11-16 12:18:01

5

我想指出,.val()也可以用于选择当前选定的值。