2013-04-29 31 views
0

我有一个JavaScript函数是这样的:如何修改该Javascript功能以获取签入数量?

function isOneChecked(id) { 
    var chk=document.getElementsByName(id); 
    var len=chk.length; 
    var flag=0; 
    for(var i=0;i<len;i++) { 
     if(chk[i].checked==true) 
      flag=1; 
    } 
    return flag; 
} 

如果复选框被选中此函数返回标志1。我想修改这个函数,以便返回检查的复选框的数量。

<input type="checkbox" name="list_session" id="{{ forloop.counter }}" value="{{ i.id }}" onchange="isOneChecked()" /> 

我该怎么做?谢谢。

我已经更新了功能的建议:

function onEdit() { 
    if(!isOneChecked('list_session') && isOneChecked('list_session') > 1) { 
     alert('Please select a file!'); 
     return false; 
     } 
     return true; 
} 

然而,即使检查结果是大于1,它不返回please select a file。如果该框未被选中,则显示Select a file

+0

您的检查!isOneChecked('list_session')&& isOneChecked('list_session')> 1是错误的。它应该是!isOneChecked('list_session')|| isOneChecked('list_session')> 1 – 2013-04-29 04:56:03

回答

1

如果您将行从flag=1;更改为flag++;,那么它应该按照您的意图进行操作。这使得它在那里标志变量保持多少检查跟踪它遇到,而不是总是将它设置为1

然后全功能如下:

function isOneChecked(id) { 
    var chk=document.getElementsByName(id); 
    var len=chk.length; 
    var flag=0; 
    for(var i=0;i<len;i++) { 
     if(chk[i].checked==true) 
      flag++; 
    } 
    return flag; 
} 

在回答您的更新:

您的条件(!isOneChecked('list_session') && isOneChecked('list_session') > 1)永远不会是true

如果函数返回:

  • 0,你就会得到!0 && 0>1,它(因为0的计算结果为假)是true && false
  • 1,那么你得到!1 && 1>1,或false && false
  • 2或更高,那么你会得到!2 && 2>1false && false

总之,你必须解决你的条件。您可以通过删除&& isOneChecked('list_session') > 1部分来完成此操作。这应该工作:

function onEdit() { 
    if(!isOneChecked('list_session')) { 
     alert('Please select a file!'); 
     return false; 
    } 
     return true; 
} 
+0

请参阅我更新的问题。 – pynovice 2013-04-29 04:26:59

+0

是的,修复它。谢谢你的精彩答案。 – pynovice 2013-04-29 04:59:28

+0

@ user2032220很高兴帮助! – 2013-04-29 05:01:16