1. ホーム
  2. javascript

[解決済み] jQueryで新しいidを設定する

2022-03-06 02:57:53

質問

はテキストフィールド、"new_id"は整数値です。

以下のスニペットを適用すると。

$(this).attr('id',   this.id + '_' + new_id);
$(this).attr('name', this.name + '_' + new_id);
$(this).attr('value', 'test');

は、idが変わると、名前も変わりますが、値は変わりません。最後の行を次のように変更すると(つまり、文字列リテラルを使用する)。

$('#mytextfield_3').attr('value', 'test');

が動作します。

何か思い当たることはありますか?

-- EDIT -- Steerpikeの素早いプラグインテストに感謝します - 私はそれが動作するはずだと信じていますが、私はエラーを見つけることができません。

以下は、いくつかのコードです。

クローンを作成するには

clone = $(this).find('.clone_fields_container:first').clone();

clone"は、入力フィールドを埋め込んだdivを含んでいます。

新しいidを生成した後。

  /** Iterate over input and select fields in container */

  clone.children('input,select,textarea').each(function() {
    $(this).attr('id',   this.id + '_' + new_id);
    $(this).attr('name', this.name + '_' + new_id);
    $(this).val('test');
    console.log(this);
  });

テキストフィールドには値がありません。

解決方法は?

私はちょうどあなたの同じスニペットを使用してテストを実行する簡単なプラグインを書きました、そしてそれはうまく動作します。

$.fn.test = function() {
      return this.each(function(){
        var new_id = 5;
        $(this).attr('id',   this.id + '_' + new_id);
        $(this).attr('name', this.name + '_' + new_id);
        $(this).attr('value', 'test');
      });
    };

$(document).ready(function() {
    $('#field_id').test()
});

<body>
  <div id="container">

  <input type="text" name="field_name" id="field_id" value="meh" />
  </div>
</body>

ですから、あなたのコードで何か他のことが起こっているとしか思えません。もう少し詳しく教えていただけますか?