2017-04-06 20 views
1

我已經在我的網站上實現了下面的代碼,當三個複選框命名爲「正確」時被檢查。如何檢查九個複選框中只有三個時顯示警報?

<input type="checkbox" name="correct"/> 
<input type="checkbox" name="correct"/> 
<input type="checkbox" name="correct"/> 

const correctInputs = [...document.querySelectorAll('input[name="correct"]')]; 

const alertIfThree =() => { 
    const checkedCorrectInputs = correctInputs.filter(input => input.checked); 
    if (checkedCorrectInputs.length > 2) { 
    alert('Alert'); 
    } 
}; 

correctInputs.forEach(input => input.addEventListener('click', alertIfThree)); 

不過,我也有6個複選框命名爲「不正確」和這些複選框進行檢查時,我不希望要生產的警惕,即使三個「正確」複選框被選中。

<input type="checkbox" name="incorrect"/> 
<input type="checkbox" name="incorrect"/> 
<input type="checkbox" name="incorrect"/> 
<input type="checkbox" name="incorrect"/> 
<input type="checkbox" name="incorrect"/> 
<input type="checkbox" name="incorrect"/> 

如何更改我的代碼以實現此目的? 在此先感謝!

+0

*「如何更改我的代碼以實現此目的?」*將它們視爲數組。 –

回答

0

你需要檢查都input.checked和input.getAttribute(「名稱」)在您的箭頭函數正確的價值

3

你可以保持同樣的邏輯

const correctInputs = [...document.querySelectorAll('input[name="correct"]')]; 
const incorrectInputs = [...document.querySelectorAll('input[name="incorrect"]')]; 

const alertIfThree =() => { 
    const checkedCorrectInputs = correctInputs.filter(input => input.checked); 
    const checkedIncorrectInputs = incorrectInputs.filter(input => input.checked); 

    if (incorrectInputs.length === 0 && checkedCorrectInputs.length > 2) { 
     alert('Alert'); 
    } 
}; 
+0

感謝您的快速響應。但是,我剛剛嘗試過這一點,但它不工作,沒有警報正在生成 –

+0

您正在爲'incorrectInputs.length'和'checkedCorrectInputs.length'獲取什麼值? – naortor

+0

我該如何檢查? '我是新來的編碼和仍然在學習 –

0

最好的辦法,我認爲將查詢不正確的複選框,並在您的if語句中添加額外條件。

const IncorrectInputs = 
[...document.querySelectorAll('input[name="incorrect"]')]; //check the incorrect values as well.. 

const alertIfThree =() => { 
    const checkedCorrectInputs = correctInputs.filter(input => 
    input.checked); 

    const checkedIncorrectInputs = IncorrectInputs.filter(input => 
    input.checked); 

    if (checkedCorrectInputs.length > 2 && checkedIncorrectInputs<=0) { 
    alert('Alert'); 
    } 
}; 
+0

感謝您的快速響應。但是,我剛剛嘗試過這種方式,但它不工作,沒有警報正在產生 –

相關問題