値にリンクを含むHTML入力があります。
<input type = 'text' value = 'http://www.link.com' id = 'link' />
jQueryを使用して特定のイベントの値を変更しています。
$('#link').val('new value');
上記のコードはテキストボックスの値を変更しますが、コードの値は変更しません(value ='http://www.link.com'は変更されません)。値=''も変更する必要があります。
値にリンクを含むHTML入力があります。
<input type = 'text' value = 'http://www.link.com' id = 'link' />
jQueryを使用して特定のイベントの値を変更しています。
$('#link').val('new value');
上記のコードはテキストボックスの値を変更しますが、コードの値は変更しません(value ='http://www.link.com'は変更されません)。値=''も変更する必要があります。
attr
代わりに使用してください。
$('#link').attr('value', 'new value');
valueプロパティを変更しても、は変更されませんdefaultValue
。コード(.html()
またはで取得innerHTML
)では、value属性にはdefaultValue
valueプロパティではなく、が含まれます。
リカルドの答えを少し拡張するには:https ://stackoverflow.com/a/11873775/7672426
http://api.jquery.com/val/#val2
val()について
このメソッドを使用して(またはネイティブ値プロパティを使用して)値を設定しても、変更イベントはディスパッチされません。このため、関連するイベントハンドラーは実行されません。それらを実行したい場合は、値を設定した後に.trigger( "change")を呼び出す必要があります。
$('#link').prop('value', 'new value');
説明:AttrはjQuery 1.6で動作しますが、jQuery1.6.1以降は変更されています。ほとんどの場合、prop()はattr()が行っていたことを実行します。コード内でattr()の呼び出しをprop()に置き換えると、通常は機能します。Attrは、ページの読み込み時にhtmlで定義された要素の値を提供し、propは、jQueryを介して変更された要素の更新された値を提供します。
これは私に起こった可能性のあるシナリオです。それが誰かを助けてくれるなら、それは素晴らしいことです。コードのどこかで、関数を使用してすべてのテキストボックスの値を表示する前にクリアする複雑なアプリを作成しました。しばらくして、jquery val('value')を使用してテキストボックスの値を設定しようとしましたが、その直後にClearAllInputsメソッドを呼び出したことに気づきませんでした。そのため、これも発生する可能性があります。
私の同様の問題は、セレクターに特殊文字(ピリオドなど)が含まれていることが原因でした。
修正は、特殊文字をエスケープすることでした:
$("#dots\\.er\\.bad").val("mmmk");
私にとっての問題は、このフィールドの値を変更しても機能しないことでした。
$('#cardNumber').val(maskNumber);
上記の解決策はどれも私にはうまくいかなかったので、私はさらに調査して見つけました:
DOMレベル2イベント仕様によると:変更イベントは、コントロールが入力フォーカスを失い、フォーカスを取得してからその値が変更されたときに発生します。つまり、変更イベントは、ユーザーの操作による変更時に発生するように設計されています。プログラムによる変更によって、このイベントが発生することはありません。
解決策は、トリガー関数を追加して、次のように変更イベントをトリガーすることでした。
$('#cardNumber').val(maskNumber).trigger('change');
<script src="//code.jquery.com/jquery.min.js"></script>
<script>
function changes() {
$('#link').val('new value');
}
</script>
<button onclick="changes()">a</button>
<input type='text' value='http://www.link.com' id='link'>