如何在jQuery中设置文本框值


107

如何正确加载一定值到使用jQuery的文本框?试了下一个,但我得到[object Object]的输出。请对此有所启发,我是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);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


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


什么是str3?声明在哪里?似乎您可能只需要从该对象
获取

抱歉,忘记设置st3 = $('#subtotal')。load('compz.php?prodid ='+ x +'&qbuys ='+ y);
维尔·安切塔

Answers:


170

我认为您想将对URL的响应设置'compz.php?prodid=' + x + '&qbuys=' + y为文本框的值,对吗?如果是这样,您必须执行以下操作:

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

参考: get()

您的代码中有两个错误:

  • load()将Ajax返回的HTML放入指定的元素:

    从服务器加载数据,并将返回的HTML放入匹配的元素。

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

  • $(selector).load()返回jQuery 对象。默认情况下,将对象[object Object]视为字符串时会将其转换为。

进一步说明

假设您的网址返回了5

如果您的HTML看起来像:

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

然后的结果

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

将会

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

但是在您的代码中,您有一个输入元素。从理论上讲(它不是有效的HTML,并且无法正常运行),等效调用将导致

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

但是你实际上需要

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

因此,您不能使用load()。您必须使用另一种方法,获取响应并将其自己设置为值。


如果我只想更改加载结果的位置,真的会变得更加困难吗?当我将其加载到div中时,上面的代码可以正常工作。
Wern Ancheta 2010年

1
@Ieyasu Sawada:好吧,当前您正在将JavaScript对象传递给它,$('#subtotal').val(str3);因为load()它不能像您认为的那样起作用。是的,您可以用来load()将文本或HTML加载到div而不是作为文本框值中。
Felix Kling

@Ieyasu Sawada:请参阅我的更新以进一步阐明,希望对您有所帮助!
菲利克斯·克林

最后一个问题?为什么在输出的实际结果之前会留空格?是否有可能在jquery中剥离它们,基本上compz.php包含很多空格以提高可读性,并且这些空格实际上与结果一起输出
Wern Ancheta 2010年

@Ieyasu Sawada:您可以使用常规的JavaScript函数,例如,使用正则表达式:data = data.replace(/\s+/, '');
Felix Kling 2010年

56

请注意,该.value属性是JavaScript功能。如果要使用jQuery,请使用:

$('#pid').val()

获得价值,并:

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

设置它。

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

关于第二个问题,我从未尝试使用该load方法自动设置HTML值。当然,您可以执行以下操作:

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

请注意,上面的代码未经测试。

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


2
值得指出相关的jQuery api页面val(),以供参考。
大卫说恢复莫妮卡

1
即使说得太基础了,也许吗?只是我的拙见...无论如何更新!
毛罗(Mauro)2010年

compz.php计算输入中2个数字的乘积。我猜想加载计算值的部分:$('#subtotal')。load('compz.php?prodid ='+ x +'&qbuys ='+ y); 被视为对象,这就是为什么我将对象对象视为输出,然后将其转换为正常值的原因
Wern Ancheta 2010年

1
永远不要太基础,请再次查看问题。如果他看过该页面或知道它的内容,他可能不会问这个问题=)
大卫说,请恢复莫妮卡2010年

1
指出真正的问题本来是和平与爱的良好起点;)
Mauro


0

尝试

subtotal.value= 5 // some value

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.