2

100以上の入力要素を持つ複雑なHTMLドキュメントを再構成しています。<input type="text" name="something" id="" ...空白のID( )、空白のみのID(<button name="unimportant" id=" "...)、またはまったくわからない(<select name="whatever">ソースに必要な修正を加えることができる)要素をすばやく見つけたいと思います。

空白のIDのセレクターはですが$('[id=""]')、1つのセレクター(または連結されたセレクター)ですべてのターゲット要素を取得するにはどうすればよいですか?

HTMLの例:

<form id="provision">
  <input type="text" name="something" id="" value="blank id" /><br />
  <input type="text" name="something2" value="no id" /><br />
  <select name="something3"><option>No id</option></select><br />
  <textarea name="something4" id="">Blank id</textarea><br />
  <button name="something5" id=" ">whitespace id</button><br />
  <button name="something6" id="  ">extra whitespace id</button><br />
  <label><input type="radio" name="something7" id="
">Carriage return id</label>
</form>

赤い境界線を追加する例については、http://jsfiddle.net/jhfrench/VNdL6/を参照してください( .css('border-color', 'red'))。

4

3 に答える 3

3

セレクターはコンマで区切ります。

$("[id=''], [id=' '], :not([id])").css("border-color", "red");

別のオプションは、フィルタリングを使用することです。

$("[id]").filter(function() {
    return $.trim(this.id) === "";
}).add(":not([id])").css("border-color", "red");
于 2013-01-16T16:45:13.713 に答える
1

filter()を使用して、IDが空白の要素またはIDがスペースで構成されている要素を除外できます。フィルタ機能の必要に応じて、複雑なフィルタを適用できます。

$(':input').filter(function(){
     if($.trim(this.id).length == 0)
           return $(this);
}).css('border-color', 'red')
于 2013-01-16T16:46:23.253 に答える
1

無効なIDに関する潜在的な問題、およびquerySelector@VisioNのソリューションに影響を与える可能性のある、またはそれに相当するjQueryからの予測できない動作を回避するために、次のような方法を試してみてください。

[].concat(document.getElementsByTagName("input")).forEach(function(elt){
    if(elt.hasAttribute("id") && /^\s*$/.test(elt.getAttribute("id")) {
        elt.removeAttribute("id");
    }
});

または、ECMAScript5環境にいない場合は同等のもの。

これは、@ Adilが実行していることとほぼ同じですが、境界線の色のプロパティを設定するだけでなく、無効なIDを削除します。

次に、CSSルールを使用して色付けを行うことができます

input:not([id]) { border-color: red; }
于 2013-01-16T17:38:46.973 に答える