1

入力フィールドのセットがあり、それぞれに「smarty_address_check」クラスがあります

<input type="text" class="smarty_address_check" value="this is a new value" />
<input type="text" class="smarty_address_check" value="this value has been unchanged" />
etc

私がしなければならないことは

  • 各入力フィールド値
  • その値を配列内の各値と比較します (配列は smarty_address_check と呼ばれます)
  • 一致する場合は、何かを行います。

配列内の値は、入力フィールドの元のデフォルト/サンプル値であり、ユーザーがそれらを変更していない場合は、それに基づいて行動したいと考えています。

var exampleAddressPresent = false;
    for (var i = 0; i<smarty_address_check.length; i++) {
        $('.smarty_address_check').each(function() { //For each of inputs
            if (smarty_address_check[i].match($(this).val())) { //if match against array
                var exampleAddressPresent = true; //Example address present
                console.log($(this).attr("id")); //store id of unchanged input

            }
        });
    }

これはプログラミング ロジックが悪いと感じます。言うまでもなく、正しく動作しない理由がわかりません。基本的にやりたいことは、ある文字列を別の文字列と比較することだけです。これにアプローチするより良い方法を知っている人はいますか?

4

2 に答える 2

3

match()2 つの文字列を比較する必要はありません。一般的な===比較演算子があります

if(smarty_address_check[i] === $(this).val()) {

編集:配列のインデックスが入力のインデックス/位置と一致する場合、同じインデックスを使用して外側のループを回避できます

$('.smarty_address_check').each(function(index) { //For each of inputs
    if (smarty_address_check[index] === $(this).val()) { //if match against array
        exampleAddressPresent = true; //Example address present
        console.log($(this).attr("id")); //store id of unchanged input
    }
});
于 2013-04-25T10:48:38.240 に答える