查找表单中已检查复选框的数量会使实际计数增加一倍

时间:2017-09-09 19:58:54

标签: javascript jquery html angularjs

我正在尝试计算表单中选中/选中的联系人复选框的数量。 下面的代码片段可能会出现什么问题,这实际上会使计数增加一倍。

HTML:

for line in old_file:
        new_line = re.sub(email_regex, \
        lambda x: hashing_func_email(x.group(1), x.group(3)), \
        re.sub(ipaddr_regex, lambda x: hashing_func_ipaddr(x.group(0)), line))

        print new_line  

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> <span class="ctCheckBox" ..。但是,只有上面的HTML代码才会显示在应用程序视图中。

JS:

<input type="checkbox" class="atl-check-box" ..

以上所有3个JS语句都会产生错误数量的选中复选框:

  1. 第一个给出实际选中的复选框计数的两倍
  2. 第二名,数是27
  3. 对于第3,计数为0
  4. 例如:如果正在选择应用程序视图中显示的仅有2个联系人,则显示4作为所选联系人数的计数,如果选择3个联系人,则显示6作为计数所选联系人的数量等等。

    我错过了什么吗?

    非常感谢任何帮助,提前谢谢!

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法。计数增加一倍的真正原因是使用了return render_template('index.html', prop1=var1, prop2=var2) ,而不是ng-hide,这将显示DOM中的选定联系人,尽管它们被隐藏或显示并导致{ng-if 1}}找到相同复选框的2次出现(重复)。 angular.element('.ctCheckBox input:checked').length现在已经解决了这个问题,因为复选框会在DOM上有条件地呈现,但是,应用程序初始加载的联系人行为列表会有一些其他的变化,这些变化将会被调查。