Pytanie jak ustawić wartość textbox w jquery


Jak poprawnie załadować określonej wartości do pola tekstowego przy użyciu jquery? Próbowałem jeden poniżej, ale otrzymuję [object Object] jako wynik. Proszę mnie oświecić, jestem nowy w 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);
    }

A oto forma 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>

91
2017-11-16 12:04


pochodzenie


co to jest str3? Gdzie jest zadeklarowane? Wygląda na to, że próbujesz załadować obiekt jako wartość, gdy prawdopodobnie potrzebujesz własności z tego obiektu. - Fgblanch
przepraszam, zapomniałem ustawić st3 = $ ('# subtotal'). load ('compz.php? prodid =' + x + '& qbuys =' + y); - Wern Ancheta


Odpowiedzi:


Myślę, że chcesz ustawić odpowiedź połączenia na adres URL 'compz.php?prodid=' + x + '&qbuys=' + y jako wartość pola tekstowego w prawo? Jeśli tak, musisz zrobić coś takiego:

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

Odniesienie: get()

Masz dwa błędy w swoim kodzie:

  • load() stawia HTML zwrócił z Ajax do określonego elementu:

    Załaduj dane z serwera i umieść zwrócony kod HTML w dopasowanym elemencie.

    Nie można ustawić wartości pola tekstowego za pomocą tej metody.

  • $(selector).load() zwraca jQuery obiekt. Domyślnie obiekt jest konwertowany na [object Object] traktowane jako ciąg.

Dalsze wyjaśnienia:

Zakładając, że Twój URL powróci 5.

Jeśli twój HTML wygląda:

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

następnie wynik

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

będzie

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

Ale w twoim kodzie masz element wejściowy. Teoretycznie (nie jest poprawny HTML i nie działa tak, jak zauważyłeś), wywoła to równoważne wywołanie

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

Ale naprawdę potrzebujesz

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

Dlatego nie możesz użyć load(). Musisz użyć innej metody, uzyskać odpowiedź i ustawić ją jako wartość samodzielnie.


148
2017-11-16 12:16



czy naprawdę jest trudniej, gdy chcę zmienić miejsce, w którym ładowany jest wynik? Powyższy kod jest funkcjonalny, gdy ładuję go do elementu div. - Wern Ancheta
@Ieyasu Sawada: Cóż, obecnie przekazujesz obiekt JavaScript $('#subtotal').val(str3); bo load() nie działa tak, jak myślałeś, że działa. Tak, możesz użyć load() załadować tekst lub HTML do pliku div ale nie jako wartość pola tekstowego. - Felix Kling
dzięki za oświecenie mnie - Wern Ancheta
@Ieyasu Sawada: Zobacz moją aktualizację dla dalszych wyjaśnień, mam nadzieję, że pomoże! - Felix Kling
jedno ostatnie pytanie? Dlaczego dostaję spacje przed faktycznym wynikiem na wyjściu? Czy można je usunąć w jquery, w zasadzie compz.php zawiera wiele białych znaków dla lepszej czytelności i te białe spacje są rzeczywiście wyprowadzane razem z wynikiem - Wern Ancheta


wartością jest javascript, aby używać języka jQuery, którego powinieneś używać

$('#pid').val()

zdobyć i

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

aby to ustawić.

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

Twój drugi numer.

Nigdy nie próbowałem automatycznego zestawu metody ładowania html, przepraszam. Na pewno możesz zrobić coś takiego

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

Przetestuj, ponieważ jestem ręcznym kodem;)

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


53
2017-11-16 12:07



Warto wskazać odpowiednie jQuery api strona dla val(), w celach porównawczych. - David Thomas
Nawet jeśli jest to zbyt proste, by to wskazać, może? Tylko moja skromna opinia ... W każdym razie zaktualizowane! - Mauro
compz.php oblicza iloczyn 2 liczb na wejściu. Chyba część, która ładuje obliczone wartości: $ ('# subtotal'). Load ('compz.php? Prodid =' + x + '& qbuys =' + y); jest traktowany jako obiekt, dlatego widzę obiekt obiektu jako wynik, w jaki sposób mogę go przekonwertować na normalną wartość - Wern Ancheta
To nigdy nie jest zbyt podstawowespójrz na to pytanie jeszcze raz. Gdyby zobaczył stronę lub znał jej treść, prawdopodobnie nie zadałby pytania =) - David Thomas
Wskazanie prawdziwego problemu byłoby dobrym punktem wyjścia dla pokoju i miłości;) - Mauro


Chciałbym podkreślić, że .val () działa również z selects, aby wybrać bieżącą wybraną wartość.


5
2017-11-16 12:18