1

以下に示す表があります。

<table class="authors-list">
      <tr>
         <td style="font-size:10px;"><a class="deleteRow"> <img src="delete2.png" /></a></td>
         <td ><input type="text" id="product1" name="product1" class="rounded"/></td>
         <td ><input type="text" size='5' id="qty1" name="qty1" class="rounded"/></td> 
         <td class="tdcheckbox"><input type="checkbox"  id="h09_1" name="h09_1" class="rounded"/></td> 
         <td class="tdcheckbox"><input type="checkbox"  id="h12_1" name="h12_1" class="rounded"/></td> 
         <td class="tdcheckbox"><input type="checkbox"  id="h15_1" name="h15_1" class="rounded"/></td> 
         <td class="tdcheckbox"><input type="checkbox"  id="h18_1" name="h18_1" class="rounded"/></td> 
         <td class="tdcheckbox"><input type="checkbox"  id="h21_1" name="h21_1" class="rounded"/></td> 
         <td class="tdcheckbox"><input type="checkbox"  id="h24_1" name="h24_1" class="rounded"/></td> 
         <td class="tdcheckbox"><input type="checkbox"  id="h27_1" name="h27_1" class="rounded"/></td> 
         <td class="tdcheckbox"><input type="checkbox"  id="h30_1" name="h30_1" class="rounded"/></td> 
         <td><input type="hidden" name="checkedsizes_1" id="checkedsizes_1" value="0"></td>
      </tr>
</table>

呼び出し時に各行checksizesフィールドにその行でチェックされたチェックボックスの数が入力されるスクリプトが必要です。

フィドルはここで見ることができます: http://jsfiddle.net/emL6x/8/

私がこれまでに持っているjqueryは次のとおりです。

countChecks(){
     $('.author-list tr').each(function(){
         var count = 0;
         var hdn = $(this).find('input[name^="checkedsizes"]');
         count = $(this).find(':checkbox:checked').length;
         hdn.val(count);
     });
}

これは現在機能していません。答えやフィドルの助けをいただければ幸いです。jquery 1.9.1 を使用しています。

私のテーブルには複数の行があるため、各行をループする必要があることに注意してください。

再度、感謝します。

4

4 に答える 4

3

何かが関数であることを宣言し、それを正しく参照するのに役立ちます

countChecks(){宣言する必要がありますfunction countChecks(){

そしてcountchecks();あるはずです countChecks();

.authors-listまた、正しいクラス名を使用してテーブルを選択するクラスをテーブルに与えるときにも役立ちます

$('.author-list tr')..読むべき $('.authors-list tr')...

http://jsfiddle.net/emL6x/11/

他のすべては完全に問題ありませんでした。

于 2013-04-22T14:22:33.860 に答える
2

いくつかのタイプミス/構文エラーがありましたが、修正しました:

function submitFunction(){
    alert("call countchecks");   
    countChecks();
    alert("checkedsizes populated");      
    alert("continue with submit");      
}

function countChecks(){
     $('.authors-list tr').each(function(){
         var count = 0;
         var hdn = $(this).find('input[name^="checkedsizes"]');
         count = $(this).find(':checkbox:checked').length;
         hdn.val(count);
         alert(count);
     });
}

関数をインラインで呼び出しているため、主なエラーが発生していることがわかります。Uncaught ReferenceError: submitFunction is not definedそのため、関数をグローバルに定義する必要があります。つまり、スクリプト onLoad をロードしないでください。これは jsFiddle で行うことができます。私はあなたのものを修正して、動作するバージョンを作成しました: jsFiddle

于 2013-04-22T14:25:25.087 に答える
1

正しい JS コードは次のとおりです。

function submitFunction (){
alert("call countchecks");   
countChecks();
alert("checkedsizes populated");      
alert("continue with submit");      
}

function countChecks(){
 $('.author-list tr').each(function(){
     var count = 0;
     var hdn = $(this).find('input[name^="checkedsizes"]');
     count = $(this).find(':checkbox:checked').length;
     hdn.val(count);
 });

}

タイプミス以外の場合は、左側のフレームワークと拡張機能の設定も変更する必要があります。デフォルトは「onDomready」です。「ラップなし」に変更する必要があります。

于 2013-04-22T15:00:31.433 に答える