jqueryでテキストボックスの値を設定する方法


107

jqueryを使用して特定の値をテキストボックスに適切にロードするにはどうすればよいですか?以下の1つを試してみましたが、[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とは何ですか?どこに宣言されていますか?オブジェクトからのプロパティがおそらく必要なときに、オブジェクトを値としてロードしようとしているようです
Fgblanch

申し訳ありませんが、st3 = $( '#subtotal')。load( 'compz.php?prodid =' + x + '&qbuys =' + y);の設定を忘れていました。
Anchetaを

回答:


170

URLへの呼び出しの応答を'compz.php?prodid=' + x + '&qbuys=' + yテキストボックスの値として設定したいと思いますよね?もしそうなら、あなたは次のようなことをしなければなりません:

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

参照: get()

コードに2つのエラーがあります。

  • load()Ajaxから返されたHTMLを指定された要素に配置します。

    サーバーからデータを読み込み、返されたHTMLを一致した要素に配置します。

    その方法ではテキストボックスの値を設定できません。

  • $(selector).load()jQuery オブジェクトを返します。デフォルトでは、オブジェクトは[object Object]文字列として扱われるときに変換されます。

さらに明確化

あなたのURLが戻ると仮定します5

HTMLが次のようになっている場合:

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

その後の結果

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

になります

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

しかし、コードにはinput要素があります。理論的には(これは有効なHTMLではなく、気づかなかったように機能しません)、同等の呼び出しは

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

しかし、実際に必要なのは

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

したがって、は使用できませんload()。別のメソッドを使用して応答を取得し、自分で値として設定する必要があります。


結果がロードされる場所を変更したいだけの場合、本当に難しくなりますか?上記のコードは、divにロードすると機能します。
Anchetaを

1
@澤田家康:さて、あなたが思ったように動作しない$('#subtotal').val(str3);ため、現在JavaScriptオブジェクトを渡していますload()。はい、load()テキストまたはHTMLをdivテキストボックスの値としてではなくに読み込むために使用できます。
Felix Kling、2010年

@沢田家康:更なる明確化のために私のアップデートを見てください、それが役に立てば幸いです!
Felix Kling、2010年

最後の質問ですか?なぜ出力の実際の結果の前にスペースが入るのですか?jqueryでそれらを取り除くことは可能ですか?基本的にcompz.phpは読みやすくするために多くの空白を含み、それらの空白は実際に結果と一緒に出力されます
Wernアンチェタ

@Ieyasu澤田:あなたはreglular式で例えば、通常のJavaScript関数を使用することができますdata = data.replace(/\s+/, '');
フェリックスクリング

56

この.value属性はJavaScript機能であることに注意してください。jQueryを使用する場合は、以下を使用します。

$('#pid').val()

値を取得します。

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

それを設定します。

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

2番目の問題については、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

compz.phpは、入力の2つの数値の積を計算します。計算された値をロードする部分を推測します:$( '#subtotal')。load( 'compz.php?prodid =' + x + '&qbuys =' + y); がオブジェクトとして扱われているため、出力としてオブジェクトオブジェクトが表示されますが、それを通常の値に変換するにはどうすればよいですか
Wern Ancheta

1
基本的すぎることはありませ。もう一度質問を見てください。彼がそのページを見た、またはそのコンテンツを知っていたとしたら、彼はおそらく質問をしなかったでしょう=)
Davidはモニカを

1
本当の問題を指摘することは、平和と愛のよい出発点となるでしょう;)
Mauro

5

.val()はselectでも機能し、現在選択されている値を選択することを指摘しておきます。


0

試す

subtotal.value= 5 // some value

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.