如何在 jQuery 中设置文本框值?

如何使用 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>

520212 次浏览

请注意,.value属性是一个 JavaScript 特性:

$('#pid').val()

to get the value, and:

$('#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/

我认为您希望将对 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]

进一步澄清 :

假设 URL 返回 5

如果你的 HTML 看起来像:

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

then the result of

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

将会是

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

但是在代码中,有一个 input 元素。理论上是的(它不是有效的 HTML,并且不能像您注意到的那样工作) ,等效的调用将导致

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

但你真的需要

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

Therefore, you cannot use load(). You have to use another method, get the response and set it as value yourself.

我想指出的是,. val ()也可以使用 select 来选择当前选择的值。

试试看

subtotal.value= 5 // some value

proc = async function(x,y) {
let url = "https://server.test-cors.org/server?id=346169&enable=true&status=200&credentials=false&methods=GET&" // some url working in snippet
  

let r= await(await fetch(url+'&prodid=' + x + '&qbuys=' + y)).json(); // return json-object
console.log(r);
  

subtotal.value= r.length; // example value from json
}
<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" id="pid"  value=""><br/>


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


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


</form>