2017-02-14 2 views
2

jqueryに問題があります。特定のインデックスのJqueryでHTMLを出力する

入力フィールドからの特定の配列インデックスにHTML出力が必要です。

<tr> 
<td><input type="text" name="ean[]"> 
<input type="text" name="serial[]"> 
</td> 
<td class="article[]"></td> 
</tr> 

$('input[name^="ean"]').change(function(event) { 
    var index = $('input[name^="ean"]').index(this); 
    $('.article:eq(index)').html("test"); 
}); 

目的は、入力フィールド(EAN)が変更された後にjQueryのインデックス(クラス記事)に特定の値を置くことです。

このコードでは、現在の変更されたインデックスには出力がありません。事前にあなたの助けのための

感謝。

答えて

2

eq()メソッドを使用するか、インデックス値を連結します。

$('input[name^="ean"]').change(function(event) { 
    var index = $('input[name^="ean"]').index(this); 
    $('.article\\[\\]').eq(index).html("test"); 
}); 

$('input[name^="ean"]').change(function(event) { 
    var index = $('input[name^="ean"]').index(this); 
    $('.article\\[\\]:eq(' + index + ')').html("test"); 
}); 

それは常により良い将来の使用のためにjQueryオブジェクトをキャッシュですが。

FYI
var $art = $('.article\\[\\]'); 
var $inp = $('input[name^="ean"]').change(function(event) { 
    var index = $inp.index(this); 
    $art.eq(index).html("test"); 
}); 

クラス名を使用すると、角括弧は特別な意味を持っているので、両方をエスケープする必要があるものの、セレクタに含める必要があるので、最後に[]が含まれています。

または、クラス名から[]を削除し、通常どおりに使用してください。個人的にはこれが好きです。

<tr> 
<td><input type="text" name="ean[]"> 
<input type="text" name="serial[]"> 
</td> 
<td class="article"></td> 
</tr> 

var $art = $('.article'); 
var $inp = $('input[name^="ean"]').change(function(event) { 
    var index = $inp.index(this); 
    $art.eq(index).html("test"); 
}); 
+0

:私はあなたの答えを 'index'だけでなくあなたも連結しました。 –

+0

@ZakariaAcharki:これまでコメントラインとして追加していましたが、今では2に分割されています.... –

0

お返事ありがとうございました。

残念ながら、動作しません。

私は適切なクラス名を持つTDフィールドをテストした:

これにより
$('td[class^="article"]').html('test'); 

は、もちろん、それはすべての位置に「test」となります。

$('.article:eq(' + index + ')').html("test"); 

でそれを試した後も出力はありません。

Iフィックスインデックスをラベル付けしようとすると何も出力が、それはEQと私の使用jQueryのバージョン(1.10.3)に問題がある可能性があり

$('.article:eq(0)').html("test"); 

のように、また、ありませんか?

+0

check私の更新された答え –

関連する問題