フォームでチェック/選択された連絡先のチェックボックスの数を数えようとしています。 実際に2倍になる以下のコードスニペットでは何が間違っている可能性がありますか?フォームでチェックされたチェックボックスの数を確認すると、実際の数が倍になります
HTML:
<div ng-hide ="onOff">
<span class="ctCheckBox" ng-class="{'searchDataCheckbox':searchView}">
<label class="atl-check-box-label">
<input type="checkbox" class="atl-check-box" ng-checked="iscontactChecked(info.userId)" ng-click ="grpAct()">
<span class="fntIcons appFtIcns"></span>
</label>
</span>
</div>
<div ng-hide ="!onOff">
<span class="ctCheckBox" ng-class="{'searchDataCheckbox':searchView}">
<label class="atl-check-box-label">
<input type="checkbox" class="atl-check-box" ng-checked="iscontactChecked(info.userId)" ng-click ="grpAct()">
<span class="fntIcons appFtIcns"></span>
</label>
</span>
</div>
HTMLフォームは、巨大な一つであり、それはあまりにも他の場所で<span class="ctCheckBox" ..
と<input type="checkbox" class="atl-check-box" ..
の両方を持っています。ただし、上記のHTMLコードのみがアプリケーションビューに表示されます。
JS:
$scope.selectedContactsCount = angular.element('.ctCheckBox input:checked').length;
alert('1st alert: ' +$('input:checkbox:checked').length);
alert('2nd alert: ' +$('.atl-check-box input:checked').length);
上記3つのJS文のすべてが選択されたチェックボックスの間違った数を得:
- 第一1は、二重、実際の選択]チェックボックスが
- についてはカウントできます第2、カウントは27
- 第3の場合、カウントは0です。
例:アプリケーションビューに表示されている連絡先が2つだけ選択されている場合は、選択された連絡先の数として4が表示され、3つの連絡先が選択されている場合は6が選択された連絡先の数など。
何か不足していますか?
ご協力いただきありがとうございます。
あなたが持っていると思うより多くの要素がセレクタに一致します。 2番目の例は何も返さないでしょうか? – adeneo
@adeneo、迅速な対応に感謝します。 HTMLフォームでは、同じスパンのチェックボックスと他の場所に入力するチェックボックスのクラス名がありますが、アプリケーションビューではこれらのチェックボックスの数だけが表示されています。 –
上記のクエリで2番目のJS文を修正しました。セレクタに一致する要素が増えたことを確認し、カウントを修正して適切な値を表示するにはどうすればよいですか? –