2013-04-29 23 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