cách đặt giá trị hộp văn bản trong jquery


107

Làm cách nào để tải đúng một giá trị nhất định vào hộp văn bản bằng cách sử dụng jquery? Đã thử cách dưới đây nhưng tôi nhận được kết [object Object]quả là đầu ra. Xin vui lòng chỉ cho tôi về điều này, tôi mới làm quen với 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 là gì? Nó được khai báo ở đâu? Có vẻ như bạn đang cố gắng để tải một đối tượng như giá trị khi bạn có thể chỉ cần một tài sản từ đó object-
Fgblanch

xin lỗi, quên đặt st3 = $ ('# tổng phụ'). load ('compz.php? prodid =' + x + '& qbuys =' + y);
Wern Ancheta

Câu trả lời:


170

Tôi nghĩ bạn muốn đặt phản hồi của lệnh gọi đến URL 'compz.php?prodid=' + x + '&qbuys=' + ylàm giá trị của hộp văn bản phải không? Nếu vậy, bạn phải làm điều gì đó như:

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

Tài liệu tham khảo: get()

Bạn có hai lỗi trong mã của mình:

  • load()đặt HTML được trả về từ Ajax vào phần tử được chỉ định:

    Tải dữ liệu từ máy chủ và đặt HTML trả về vào phần tử phù hợp.

    Bạn không thể đặt giá trị của hộp văn bản bằng phương pháp đó.

  • $(selector).load()trả về một đối tượng jQuery . Theo mặc định, một đối tượng được chuyển đổi thành [object Object]khi được coi là chuỗi.

Làm rõ thêm :

Giả sử URL của bạn trả về 5.

Nếu HTML của bạn giống như sau:

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

sau đó là kết quả của

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

sẽ là

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

Nhưng trong mã của bạn, bạn có một yếu tố đầu vào. Về mặt lý thuyết (nó không phải là HTML hợp lệ và không hoạt động như bạn nhận thấy), một lệnh gọi tương đương sẽ dẫn đến

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

Nhưng bạn thực sự cần

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

Do đó, bạn không thể sử dụng load(). Bạn phải sử dụng một phương pháp khác, nhận phản hồi và tự đặt nó làm giá trị.


nó thực sự trở nên khó khăn hơn nếu tôi chỉ muốn thay đổi nơi kết quả đang được tải? Mã của tôi ở trên hoạt động khi tôi tải nó vào một div.
Wern Ancheta

1
@Ieyasu Sawada: Chà, hiện tại bạn đang chuyển một đối tượng JavaScript tới $('#subtotal').val(str3);load()nó không hoạt động như bạn nghĩ. Có, bạn có thể sử dụng load()để tải văn bản hoặc HTML vào một divgiá trị nhưng không phải dưới dạng hộp văn bản.
Felix Kling

@Ieyasu Sawada: Xem bản cập nhật của tôi để làm rõ thêm, hy vọng nó sẽ hữu ích!
Felix Kling

một câu hỏi cuối cùng? Tại sao tôi nhận được khoảng trắng trước kết quả thực trên đầu ra? Có thể tách chúng trong jquery không, về cơ bản compz.php chứa nhiều khoảng trắng để dễ đọc hơn và những khoảng trắng đó thực sự được xuất cùng với kết quả
Wern Ancheta

@Ieyasu Sawada: Bạn có thể sử dụng chức năng Javascript bình thường, ví dụ như với biểu reglular:data = data.replace(/\s+/, '');
Felix Kling

56

Lưu ý rằng .valuethuộc tính là một tính năng JavaScript. Nếu bạn muốn sử dụng jQuery, hãy sử dụng:

$('#pid').val()

để nhận giá trị và:

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

để thiết lập nó.

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

Về vấn đề thứ hai của bạn, tôi chưa bao giờ thử tự động đặt giá trị HTML bằng loadphương pháp này. Chắc chắn, bạn có thể làm điều gì đó như sau:

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

Lưu ý rằng đoạn mã trên chưa được kiểm tra.

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


2
Bạn nên chỉ ra trang api jQuery có liên quan val()để tham khảo.
David nói hãy phục hồi Monica vào

1
Ngay cả khi cách quá cơ bản để chỉ ra nó, có thể không? Chỉ là ý kiến ​​khiêm tốn của tôi ... Dù sao cũng được cập nhật!
Mauro

compz.php tính tích của 2 số trong đầu vào. Tôi đoán phần tải các giá trị đã tính: $ ('# tổng phụ'). Load ('compz.php? Prodid =' + x + '& qbuys =' + y); đang được coi là đối tượng đó là lý do tại sao tôi thấy đối tượng đối tượng như đầu ra, làm thế nào sau đó để tôi chuyển nó sang một giá trị bình thường
Wern Ancheta

1
Nó không bao giờ là quá cơ bản , hãy nhìn lại câu hỏi. Nếu anh nhìn thấy trang, hoặc được biết nội dung của nó, ông có lẽ sẽ không đã hỏi những câu dưới =)
David nói Khôi phục Monica

1
Chỉ ra những vấn đề thực sự sẽ là một tốt điểm bắt đầu hòa bình và tình yêu;)
Mauro

5

Tôi muốn chỉ ra cho bạn rằng .val () cũng hoạt động với các lựa chọn để chọn giá trị được chọn hiện tại.


0

thử

subtotal.value= 5 // some value

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.