9

私はjQueryを使うのが苦手なので、テキスト入力ボックスが変更されたときに値を取得する必要があります。id[2][t]そのテキストをdiv後でスタイルを設定する(jQueryでもスタイル設定)。

これは入力ボックスコードです:

<input id="id[2][t]" name="id[2][t]" maxlength="20" type="text">

これは私が表示しようとしているdivです:

<div id="textpreview"></div>

これは私が試したことであり、他のバリエーションもありますが成功していません。

$(document).ready(function() {

$('#id\\[2\\]\\[t\\]').change(function() {
  var txtval = $('#id\\[2\\]\\[t\\]').text();
  $("#textpreview").val(txtval);
});

});

括弧は問題であることを私は知っていますが、それらは他の理由で残る必要があります。

何か案は?

6 답변


-1

あなたが持っているvalそしてtext後方に。それらを交換する:

$('#id\\[2\\]\\[t\\]').change(function() {
  var txtval = $('#id\\[2\\]\\[t\\]').val();
  $("#textpreview").text(txtval);
});

valテキストボックスの値を取得するために使用されます。text内にテキストを設定するdiv

次のようにして、コードをさらに単純化することができます。this要素を再クエリする代わりに。

$('#id\\[2\\]\\[t\\]').change(function() {
  var txtval = this.value;
  $("#textpreview").text(txtval);
});


  • これはうまく機能しているようで、短くなります。ありがとうございました。これは話題外ですが、id [3]のセレクトボックスの値に基づいてそのdivのクラスをどのように変更すればよいでしょうか。 - Rob
  • $(this).val() === this.value覚えておいてください。あなたはjQueryを使う必要はありません。すべて - rlemon

8

$( document.getElementById( "id[2][t]" ) ).change( function(){
  $( "#textpreview" ).text( this.value );
} );


  • JQueryの内部でgetByIdを使用すると、DOMからIDを選択する際の実際の動作が30%速くなります。 (私はまだそのperfを見つけることができるかどうか見てみましょう) - rlemon
  • jsperf.com/vanilla-jquery-one/2 - rlemon
  • jQueryを使用している場合は@Robなしで複雑なセレクター私はこれを実装することをお勧めします - DOMを操作するときのどんなパフォーマンス改善も望ましいです.. - rlemon

4

あなたはあなたのIDを修正することを検討するかもしれません(私はそれらが自動生成されるかもしれないと思いますが)。によるこの質問あなたのIDは仕様に対して無効です


  • そうです…改訂したいのですが、それは選択肢ではありません。 - Rob
  • @Rob大丈夫ですが、他にファンキーな問題が発生している場合はこれを念頭に置いてください。マークアップが有効でない場合は、ブラウザ間の問題の影響を受けやすくなります。 - tomfumb
  • ええ、一般的にあなたはこのようなIDを作りたくはありません。意味がありません。私はこれらのIDがテーブルを反映していると仮定します、その場合DOMは当然IDを割り当てる必要なしにこれをするための手段を提供します。 - Incognito

0

代わりに属性セレクタを使用してください。

var sel = $("[id='id[2][t]']");
sel.change(function() {
  $("#textpreview").val(sel.text());
});


  • これではうまくいきませんでした。textそしてval間違った場所で使われています。 - James Montagne
  • トロール殺人トロールあなたは、文書全体の属性セレクタが遅い、遅い、地獄のように遅いことを知っています。 - Raynos
  • @レイノス:私たちは?私たちがものを知っていることをどのように知っていますか?私は、そのことを知りませんでした。丁寧で説明してくれてありがとう。 - Rocket Hazmat
  • @ロケット ;_;属性セレクタはコンテキスト全体を通過します(documentデフォルトでは、すべてのノードをその属性とその値が一致するかどうかを確認します。人々はこれを知っている/理解するべきです。 - Raynos
  • @Rocket DOMの仕組みです。developer.mozilla.org/en/Using_the_W3C_DOM_Level_1_Core - Incognito

0

普通のJavaScript:

var elem = document.getElementById('id[2][t]');

elem.onchange = function()
{
    var elem = document.getElementById('textpreview');
    elem.removeChild(elem.firstChild)
    elem.appendChild(document.createTextNode(this.value));
}

ああ...今はそれが気分が悪くないですか?


  • なぜあなたはいませんelem.addEventListener('change', function () { ... }) - Raynos
  • 私はあなたを激怒させるように誘惑したいので、@ Raynos(も、.onchangeクロスブラウザです。addEventListenerではありません) - Ryan Kinal
  • サポートしているブラウザ.textContent支える.addEventListenerあなたの引数はnullです - Raynos

-4

IDセレクタの代わりに属性セレクタを使用してみることができます。

$('[id="id[2][t]"]')


  • なぜ投票しないで、説明してもいいですか? - Rocket Hazmat
  • ダウン投票者ではありませんが、この回答は上記の回答と重複していますが、同じ理由によるものかもしれません:-) - Esailija
  • idに属性セレクタを使用するという概念は、私を嘔吐させます。 - Raynos
  • @Raynos:それで、それで、なぜ私が投票を下されたのですか。私はあなたがむしろ持っていると思います\\[そして\\]? DOM内の1つのアイテムについて、誰がそれが遅いのかを気にかけますか?あなたはこの検索をキャッシュするか、あるいはそれにクラスを追加するか、あるいはIDを変更することで将来の検索をスピードアップすることができます。私はあなたのことを知らないが、文字列全体にバックスラッシュを付けるのは嫌いだ。ひどいようだ。私は彼らが嘔吐に役立つかもしれないあなたのために薬を持っていると思います、あなたが気分が良くなることを願っています。 - Rocket Hazmat
  • @ロケット私は悪いコード習慣を推薦してくれたことに敬意を表します。インターネットがクロールの速度を遅くしたくない。 - Raynos

リンクされた質問


関連する質問

最近の質問