1

数値の入力値を設定するJavaScriptがあります。ただし、機能しません。呼び出し後も入力の値フィールドは空のままです(ただし、要素のval()を出力するconsole.log()は正しい値を示します)。jQueryの.val(total)、. attr('value'、total)の3つの方法で値を設定しようとしましたが、古い.value =を使用しましたが、まだ何もありません。要素全体をhtmlに置き換え、値をvalue属性に連結しましたが、機能しません。

なぜこれがかからないのか、何か考えはありますか?

マークアップは次のとおりです。

<div id="proposal_price_box">
  <div class="proposal_price_header sys_bkgcolor">
    <span class="title"><h3>Price to Appear on Proposal</h3></span>
  </div>
  <div class="inner">
    <span class="label">$</span>
    <input type="number" class="amount-input" id="proposal_price" value=""/>
  </div>
</div>

そして、関連するjavascript:

$('#proposal_price').val('1234');

以下の問題を示すJsfiddle。

http://jsfiddle.net/n8z9K/12/

どういうわけか、要素のコンテナが表示されている場合、それは値を設定します。しかし、再び隠されるとすぐに壊れます。

編集申し訳ありませんが、JSfiddleで問題を適切に示していませんでした。コンテナの内容を複製して別の場所に配置しようとしています。問題をわかりやすくするためにjsfiddleを更新しました。

4

2 に答える 2

2

入力ノードの値とその値属性には違いがあります。val()メソッドを使用してその値を割り当てる場合、value属性ではなく、その値を設定します。html()メソッドを使用すると、すべての属性(value属性を含む)を含むhtmlが取得されますが、その属性はval()割り当てによって変更されていません。ノードの値のみが変更されました。

于 2013-02-07T17:00:26.580 に答える
0

あなたはします#proposal_price { display: none; }。その要素を使用すると、同じIDが保持されます(実際には無効ですが、最新のブラウザーでこれを処理できます)。したがって、display: none;クローンのIDを削除する必要があるため、非表示のままになります。削除しないと、クローンも表示されません。

はい、このjQueryはそれを解決しているようです:

$(document).ready(function() {
    $('#proposal_price').val('123');
    console.log("before clone");
    clone = $('#proposal_container').clone();
    clone.attr("id", "");
    console.log("after clone");
    $('body').append(clone.html());
});
于 2013-02-07T17:18:55.367 に答える