0

class="txtdate" の入力テキストボックスのリストがあります

class ="txthrs" の別の入力テキストボックスのリスト

お気に入り

 <div id="dvlitr"><li id="0"><label class="txtdatewrapper"><input type="text" placeholder="Select Date" class="txtdate hasDatepicker" value="" readonly="" id="txtsDate1"><span class="txtdateicon"></span> </label><input type="text" placeholder="Hrs" class="txthours" value="" id="txtsHrs1"><a title="Add" class="btnadd" href="javascript:void(0)"></a><a title="Delete" id="btndelnewli1" class="btndelete" href="javascript:void(0)"></a><input type="hidden" placeholder="Hrs" value="0" id="iDhdn0"></li><li id="2"><label class="txtdatewrapper"><input type="text" placeholder="Select Date" class="txtdate hasDatepicker" readonly="" id="txtsDate2" value="10/28/2013"><span class="txtdateicon"></span></label> <input type="text" placeholder="Hrs" class="txthours" id="txtsHrs2"><a title="Add" class="btnadd" href="javascript:void(0)"></a><a title="Delete" id="btndelnewli2" class="btndelete" href="javascript:void(0)"></a><input type="hidden" placeholder="Hrs" value="0" id="iDhdn2"></li><li id="3"><label class="txtdatewrapper"><input type="text" placeholder="Select Date" class="txtdate hasDatepicker" readonly="" id="txtsDate3" value="10/30/2013"><span class="txtdateicon"></span></label> <input type="text" placeholder="Hrs" class="txthours" id="txtsHrs3"><a title="Add" class="btnadd" href="javascript:void(0)"></a><a title="Delete" id="btndelnewli3" class="btndelete" href="javascript:void(0)"></a><input type="hidden" placeholder="Hrs" value="0" id="iDhdn3"></li></div>

私は空の日付または空の時間(それらのいずれか)を持つliがあるかどうかを見つけなければなりません

私はこのようなことを試しました

  var count = $('#dvlitr > li').filter(function() {
            var $txtdate = $(this).children('.txtdate').val();
            var $txthrs = $(this).children('.txthrs').val();
            return (($.trim($txtdate) != '' && $.trim($txthrs) === '') || ($.trim($txtdate) === '' && $.trim($txthrs) != ''))
        }).length;
        alert(count);

フィドル

しかし、望ましい結果が得られません

助けてください

ありがとう

4

3 に答える 3

1

:" " の前の " " を削除inputしてください... より良くなりますが、トリックを実行しませんでした!

詳細については、 Jquery セレクターのドキュメントを参照してください。

そして、あなたはいくつかの間違いを犯します。私はこれが今正しいはずだと思います:

var count = $("li > input.txtdate[value='']+
                   input.txthrs[value='']").length;

とのli両方が空である の数だけを取得したい ですか?txtdatetxthrs

この更新された palash fiddleで実際に動作しているのを見ることができます

完了するには、属性が見つからないvalueときに実際に空の場合は、次のものを使用します。value

var count = $("li > input.txtdate:not([value])+
                 input.txthrs:not([value])").length;

$('input[type=text']:not([value])).attr('value','');

ほぼ 1 つのフィールドが空の行数を取得するには、次を使用します。

var count = $.unique($("li").has("input.txtdate[value=],input.txtdate:not([value]),input.txthrs[value=],input.txthrs:not([value])")).length;

アップデート

$('input:not([value])').attr('value', '');
//Getting only lines when one of input is empty
$.unique($("li").has("input.txtdate[value=''],input.txthrs[value='']")).length;
//Getting only lines when both inputs are empty
$("li > input.txtdate[value='']+input.txthrs[value='']").length;

私を信じるかどうか...

新しい DOM 入力による UPDATE は、li の直接の子ではありません

$('input:not([value])').attr('value', '');
//Getting only lines when one of input is empty
$.unique($("li").has("input.txtdate[value=''],input.txthrs[value='']")).length;
//Getting only lines when both inputs are empty
$("li input.txtdate[value='']+input.txthrs[value='']").length;

私は目を覚ます...ごめんなさい!あなたは最初から正しかったので、単純なセレクターでは、入力のユーザー更新を検出できません! ごめんなさい、私が悪かった!私はこのプラグインをここに設立しました:

jQuery.extend(
  jQuery.expr[':'],
  {
    /// check that a field's value property has a particular value
    'field-value': function (el, indx, args) {
      var a, v = $(el).val();
      if ( (a = args[3]) ) {
        switch ( a.charAt(0) ) {
          /// begins with
          case '^':
            return v.substring(0,a.length-1) == a.substring(1,a.length);
          break;
          /// ends with
          case '$':
            return v.substr(v.length-a.length-1,v.length) == 
              a.substring(1,a.length);
          break;
          /// contains
          case '*': return v.indexOf(a.substring(1,a.length)) != -1; break;
          /// equals
          case '=': return v == a.substring(1,a.length); break;
          /// not equals
          case '!': return v != a.substring(1,a.length); break;
          /// equals
          default: return v == a; break;
        }
      }
      else {
        return !!v;
      }
    }
  }
);

次のようないくつかのセレコトルを作成できます:

$('input:field-value(=)');//for empty

$.unique($("li").has("input.txtdate:field-value(=),input.txthrs:field-value(=)")).length;
于 2013-10-25T08:36:00.110 に答える
1

正しい HTML マークアップを確認したら、次の操作を実行できます。

var count = $('li').filter(function () {
    var $txtdate = $(this).children('.txtdate').val();
    var $txthrs = $(this).children('.txthrs').val();
    return ($.trim($txtdate) === '' && $.trim($txthrs) === '')
}).length;

console.log('count:  ' + count);

デモ:フィドル

アップデート

あなたはこれを行うことができます:

var count = $('li').filter(function () {
    var $txtdate = $(this).find('.txtdate').val();
    var $txthrs = $(this).find('.txthrs').val();
    return ($.trim($txtdate) === '' && $.trim($txthrs) === '')
}).length;
于 2013-10-25T08:42:39.780 に答える
0

これを試して。すべての入力を取得し、それらを反復処理します。

var count = 0;
$('.txtdate, .txthrs').each(function (){ 
    if($(this).val() == '') { //If inspects if the input has an empty value
        //Do something here if the value is empty
        //can add css to change the color or 
        //assign class to it or call method, etc
        count++;
    } 
});
console.log('count:  ' + count);
于 2013-10-25T09:24:58.953 に答える