2012-03-01 17 views
0

を持っていない - 私のフィールドが隠れていません。以下は、どのように私は見つけた後、私は私のコードが正しいかどうかわからないが、私は特定の要素の上にいくつかのチェックを実行しようとしていますが、私のカウンターが機能していないコールバック関数

//get all fields, some could be text, text area, checkbox, radio... 

$(".my-field").each(function(i) { 
var wrapper = this; 

//check if the text box has a vaule, this callback here is not working/ correct? 

$(wrapper).find("input:text", function() { 
       if ($(this).val() != "" || $(this).val().length > 0) { 
        hidden++; 
        $(wrapper).find(".field-content").hide(); 
        $(wrapper).addClass("hide"); 
       } else { 
        visible = visible + 1; 
       } 
      }); 
}); 

私のHTMLは、それらはすべて

<div data-field-type="Text" data-field-id="1" class="display-wrapper my-field"> 
     <div class="field-header"> 
      <span>name: 
       xyz</span> | <span> 
        text field</span> 
     </div> 
     <div class="field-content"> 
      <div class="editor-label"> 
       <p class="clear"> 
        some description...</p> 
      </div> 

<div class="editor-field"> 
    <input type="text" value="iojhiojio" name="1" maxlength="100" id="field-1" class="field-bigtext"> 
</div> 
      <br> 
     </div> 
     <div style="display: none;" class="field-error-wrapper"> 

     </div> 
    </div> 

他の分野とのdivの内側に私の質問に包まれている(1つのdiv要素は、以下に示す)1つのフィールドあり、これはjQueryを使って可能です:

$(wrapper).find("input:text", function() { 
.. some code 
}); 
+0

ラッパーも指定されたコードで定義されていません。 –

答えて

2

おそらく、各要素に何かをするためには、.each()を探しています。

$(wrapper).find("input:text").each(function() { 
    if ($(this).val() != "" || $(this).val().length > 0) { 
     hidden++; 
     $(wrapper).find(".field-content").hide(); 
     $(wrapper).addClass("hide"); 
    } 
    else { 
     visible++; 
    } 
}); 

.find()一つだけを行います。あなたは指定されたセレクタ/オブジェクトに一致する上でそれを実行している要素内のオブジェクトを検索します。

編集:あなたのコメントを読んだ、あなたは、単一の要素に何かをしたいと述べました。だから、.find()に入ったものを変数に格納しておきます。

var inputElem = $(wrapper).find('input:text'); 
if (inputElem.val() != "" || inputElem.val().length > 0) { 
    hidden++; 
    $(wrapper).find('.field-content').hide(); 
    $(wrapper).addClass("hide"); 
} 
else { 
    visible++; 
} 
+0

いいえ、私はラッパーの中に多くの要素があり、すべてをチェックする必要があるので、テキストボックスの場合はラッパーの中に1つの要素しかありません。ラジオボックスのコードはOKです。 – Haroon

+0

関数を実行するには見つけるの?または見つける後? 1つの要素があるので – Haroon

+0

私はそのシナリオの答えを更新しました。それは同じことをやろうとしますが、少し速いかもしれません。 –

0

それぞれを追加するだけです。

//get all fields, some could be text, text area, checkbox, radio... 
$(".my-field").each(function (i) { 
    var wrapper = this; 
    //check if the text box has a vaule, this callback here is not working/ correct? 
    $(wrapper).find("input:text").each(function() { 
     if($(this).val() != "" || $(this).val().length > 0) { 
      hidden++; 
      $(wrapper).find(".field-content").hide(); 
      $(wrapper).addClass("hide"); 
     } else { 
      visible = visible + 1; 
     } 
    }); 
});