2010-11-16 82 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()也可以用於選擇當前選定的值。