2
<input type="text" class="input">
<input type="text" class="input">  
<input type="text" class="input">
<input type="text" class="input">
<input type="text" class="input">

上記のようなHTMLにて、
入力されているinputタグに処理をしたいのですが、

$('.input').each(function() {
  if ($(this).val()) {
    $(this).hogehoge;
  }
});

↑のようにループ等使わずに、

$('xxxxxx').hogehoge;

と、1行で書く事はできないでしょうか。
よろしくお願いします。

r-naga
  • 89
  • 1
  • 8
  • フォームとは何を指しますか?htmlにはformタグというものがありますが、inputタグのことに読めます。用語を正しく使って下さい。 – htb Mar 22 '16 at 07:29
  • 1
    失礼しました。これでどうでしょうか。 – r-naga Mar 22 '16 at 07:37

2 Answers2

1

やりたい事によっては、input要素をrequired="requiredにしておき、:invalid擬似クラスを使う方法でもよさそうですね。
(jQueryの独自機能では無いですし、この手の事で単純な事は大抵CSSだけで出来ますが)

$('button').on('click', function() {
  $('input:invalid').css('background-color', 'orange');
  $('input:valid').css('background-color', 'lightgreen');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="text" required="required"/> <button>Run</button>

mjy
  • 12,137
  • 3
  • 22
  • 53
  • mjyさん。なるほど、疑似クラスというのがあったのですね。参考になりました。ありがとうございます。 – r-naga Mar 22 '16 at 09:10
0

input等の要素が入力済みであるか、あるいはvalueプロパティを検査できるようなセレクタはjQueryにもないと思います。処理の部分をループの外に追い出したいということであれば .filter() を使う手はありますが、判定の部分はやはり無名関数を使うことになります。

$('button').on('click', function() {
  $('.input')
    .css('background', '') //reset
    .filter(function(){ return $(this).val() !== ''; })
    .css('background', 'gray');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="input">
<input type="text" class="input">
<input type="text" class="input">
<input type="text" class="input">
<input type="text" class="input">
<button>Check</button>
unarist
  • 14,871
  • 5
  • 35
  • 78
  • unarist♦さん。jQueryには無かったのですね。てっきり出来るものだと思っていました。ご回答ありがとうございます。 – r-naga Mar 22 '16 at 09:09