0

私はこのトピックを広範囲に調査してきましたが、私がやりたいことにワイルドカードがないと仮定する前に、最後の手段として尋ねています。

ドキュメントからすべてのテキスト入力要素を取り出して配列に追加する必要があります。ただし、id を持つ入力要素のみを追加したいです。

$(#\S*) などの ID セレクターを使用するときに \S* ワイルドカードを使用できることはわかっていますが、テキスト タイプのみで結果をフィルター処理する必要があるため、これを使用することはできません。属性。

私は現在これを持っています:

values_inputs = $("input[type='text'][id^='a']");

これは私が望むように機能しますが、「a」で始まるテキスト入力要素のみが返されます。何でも「id」を持つすべてのテキスト入力要素を取得したい。私は使用できません:

values_inputs = $("input[type='text'][id^='']"); //or
values_inputs = $("input[type='text'][id^='*']"); //or
values_inputs = $("input[type='text'][id^='\\S*']"); //or
values_inputs = $("input[type='text'][id^=\\S*]"); 
//I either get no values returned  or a syntax error for these

JQuery属性セレクターのSQLで * に相当するものを探しているだけだと思います。そのようなことはありませんか、それともこの問題に間違った方法でアプローチしているだけですか?

4

4 に答える 4

1

実際には、それは非常に簡単です:

var values_inputs = $("input[type=text][id]");
于 2013-04-10T19:31:21.373 に答える
1

あなたの論理は少しあいまいです。idを持つ要素ではなく、id が空の文字列に等しくない要素が必要と思います。これを使って。

values_inputs = $("input[type='text']")
    .filter(function() { 
        return this.id != '';
     });
于 2013-04-10T19:26:02.567 に答える
1

セレクターを次のように変更してみてください。

$("input[type='text'][id]")
于 2013-04-10T19:31:12.857 に答える
0

ワイルドカードを非常に簡単に使用する別の方法を見つけました。これは私を大いに助けたので、共有したいと思いました。

次のようにセレクターで属性ワイルドカードを使用して、'*' の使用をエミュレートできます。インデックスを表す数字が動的に変化することを除いて、要素が同じ命名規則で作成される動的に生成されたフォームがあるとします。

id='part_x_name' //where x represents a digit 

ID名と要素タイプの特定の部分を持つテキスト入力のものだけを取得したい場合は、次のことができます:

var inputs = $("input[type='text'][id^='part_'][id$='_name']");

ほら、ID文字列の先頭に「part_」があり、文字列の末尾に「_name」があるすべてのテキスト入力要素が取得されます。次のようなものがある場合

id='part_x_name_y' // again x and y representing digits

あなたができる:

var inputs = $("input[type='text'][id^='part_'][id*='_name_']"); //the *= operator means that it will retrieve this part of the string from anywhere where it appears in the string. 

他の id の名前によっては、他の要素 id がドキュメント内で同様の命名規則を使用している場合、少し複雑になる可能性があります。ワイルドカードを指定するには、もう少し工夫が必要かもしれません。ほとんどの場合、必要なものを取得するにはこれで十分です。

于 2013-04-29T14:29:02.317 に答える