jquery'de metin kutusu değeri nasıl ayarlanır


107

Jquery kullanarak belirli bir değeri bir metin kutusuna nasıl düzgün bir şekilde yüklerim? Aşağıdakini denedim ama [object Object]as çıktısını alıyorum . Lütfen beni bu konuda aydınlatın, jquery'de yeniyim.

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 nedir? Nerede ilan edilir? Görünüşe göre o nesneden sadece bir özelliğe ihtiyaç duyduğunuzda, bir nesneyi değer olarak yüklemeye çalışıyorsunuz-
Fgblanch

üzgünüm, st3 = $ ['# subtotal') ayarlamayı unuttum. load ('compz.php? prodid =' + x + '& qbuys =' + y);
Wern Ancheta

Yanıtlar:


170

'compz.php?prodid=' + x + '&qbuys=' + yMetin kutusunun değeri olarak URL çağrısının yanıtını ayarlamak istediğinizi düşünüyorum , değil mi? Öyleyse, aşağıdaki gibi bir şey yapmanız gerekir:

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

Referans: get()

Kodunuzda iki hata var:

  • load()Ajax'tan döndürülen HTML'yi belirtilen öğeye koyar :

    Sunucudan veri yükleyin ve döndürülen HTML'yi eşleşen öğeye yerleştirin.

    Bu yöntemle bir metin kutusunun değerini ayarlayamazsınız.

  • $(selector).load()jQuery nesnesini döndürür . Varsayılan olarak, bir nesne [object Object]dizge olarak ele alındığında nesneye dönüştürülür .

Daha fazla açıklama :

URL'nizin döndüğünü varsayarsak 5.

HTML'niz şöyle görünüyorsa:

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

sonra sonucu

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

olacak

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

Ancak kodunuzda bir giriş öğeniz var. Teorik olarak (geçerli HTML değildir ve fark ettiğiniz gibi çalışmaz), eşdeğer bir çağrı

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

Ama aslında ihtiyacın var

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

Bu nedenle kullanamazsınız load(). Başka bir yöntem kullanmalı, yanıtı almalı ve bunu kendiniz değer olarak belirlemelisiniz.


sonucun yüklendiği yeri değiştirmek istersem gerçekten zorlaşır mı? Yukarıdaki kodum, onu bir div'e yüklediğimde işlevseldir.
Wern Ancheta

1
@Ieyasu Sawada: Şu anda bir JavaScript nesnesini iletiyorsunuz $('#subtotal').val(str3);çünkü load()düşündüğünüz gibi çalışmıyor. Evet, load()bir divmetin kutusu değeri olarak değil içine metin veya HTML yüklemek için kullanabilirsiniz .
Felix Kling

@Ieyasu Sawada: Daha fazla açıklama için güncellememe bakın, umarım yardımcı olur!
Felix Kling

Son bir soru? Çıktıdaki asıl sonuçtan önce neden boşluklar alıyorum? Bunları jquery'de çıkarmak mümkün mü, temelde compz.php daha iyi okunabilirlik için çok sayıda beyaz boşluk içeriyor ve bu boşluklar aslında sonuçla birlikte çıktı alınıyor
Wern Ancheta

@Ieyasu Sawada: Normal JavaScript işlevlerini kullanabilirsiniz, örneğin regüler ifadeyle:data = data.replace(/\s+/, '');
Felix Kling

56

Not .valueözellik bir JavaScript özelliğidir. JQuery kullanmak istiyorsanız, şunu kullanın:

$('#pid').val()

değeri almak için ve:

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

ayarlamak için.

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

İkinci sorununuzla ilgili olarak, bu loadyöntemi kullanarak HTML değerini otomatik olarak ayarlamayı hiç denemedim . Elbette bunun gibi bir şey yapabilirsiniz:

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

Yukarıdaki kodun test edilmediğini unutmayın.

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


2
Referans amacıyla ilgili jQuery api sayfasını işaret etmeye değer val().
David

1
Bunu belirtmek için çok basit olsa bile, belki? Sadece benim mütevazi fikrim ... Her neyse güncellendi!
Mauro

compz.php, girişteki 2 sayının çarpımını hesaplar. Hesaplanan değerleri yükleyen kısmı tahmin ediyorum: $ ('# subtotal']. Load ('compz.php? Prodid =' + x + '& qbuys =' + y); nesne olarak görülüyor, bu yüzden nesneyi çıktı olarak görüyorum, o zaman onu nasıl normal bir değere dönüştürürüm
Wern Ancheta

1
Asla çok basit değildir , soruya tekrar bakın. Sayfayı görseydi veya içeriğini bilseydi, muhtemelen soruyu sormazdı =)
David

1
Gerçek soruna işaret etmek iyi bir başlangıç ​​noktası olabilirdi Barış ve Sevgi;)
Mauro

5

Size belirtmek isterim ki .val () aynı zamanda seçimlerle birlikte geçerli seçili değeri seçmek için de çalışır.


0

Deneyin

subtotal.value= 5 // some value

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.