2013-02-19 33 views
0

我有以下功能,效果很好,當出現在頁面上一個產品:更改JavaScript函數與多個複選框配合可以接受的條款和條件

<script type="text/javascript">// <![CDATA[ 
function confSubmit() 
{ 
if(!document.getElementById("one").checked) 
{ 
    alert("Please read and accept the terms and conditions + Warnings in order to sign up to Woolly Mammoth"); 
    return false; 
} 

} 
// ]]></script> 

上述功能顯示,如果檢查錯誤框中的條款和條件,未經檢查。

現在我在頁面上有多個產品都有自己的複選框,問題是如果我在每個產品旁邊放一個複選框,那麼它總是顯示錯誤,除非他們檢查每個產品旁邊的複選框。

任何人都可以幫我編輯功能,所以我可以在多個複選框上使用它,但只有1盒需要檢查。

該功能在貝寶按鈕上調用。當然,有一種更簡單的方法,而不是重命名該功能並更改每個產品的ID?

感謝

+0

我試着複製if(!document.getElementById(「one」)。checked)向下並用id 2,3替換它,但仍然需要檢查它們。 – RuFFCuT 2013-02-19 19:08:06

+0

我可以更改ID爲任何東西,這是一個平坦的網站 – RuFFCuT 2013-02-19 19:08:27

回答

1

你能做的就是通過類名的元素代替,並給予複選框一個共同的CSS類名。不幸的是< IE9不支持getElementsbyClassName,所以我建議使用jQuery。

function confSubmit() { 
    var checkCount = $('.myclass:checked').length; 
    if(checkCount < 1) { 
     alert('....'); 
    } 
} 
+0

非常感謝,所以我只是添加'class = one'到複選框?此外,如果有無論如何鎖定框到某種形式提交按鈕。因爲可以提交多種表單,所以有人可以查看另一個表單並提交任何表單。 – RuFFCuT 2013-02-19 19:14:36

+0

class =「one」上面的代碼不提交表單,它只是檢查是否選中了一個複選框。其餘的是一個不同的問題。 – 2013-02-19 19:35:47

+0

嗨,我試過了,包括jquery,但它似乎並沒有工作。當沒有選中複選框時,警報不會顯示 – RuFFCuT 2013-02-19 20:09:24

0

我沒有運行代碼,所以測試它。您需要爲每個複選框設置不同的ID。

<script type="text/javascript">// <![CDATA[ 
function confSubmit() 
{ 
var boxesChecked = 0; 

if(document.getElementById("one").checked) 
{ 
boxesChecked++; 
} 
if(document.getElementById("two").checked) 
{ 
boxesChecked++; 
} 
//same for all boxes .... 

if(boxesChecked==1) 
    return true; 
else 
    return false; 

} 
// ]]></script> 
0

Diodeus的答案是正確的,但是如果你想要做沒有的JQuery(願上帝保佑你),你只需要getElementsByClassName方法()一個填充工具:

https://gist.github.com/eikes/2299607

// Add a getElementsByClassName function if the browser doesn't have one 
// Limitation: only works with one class name 
// Copyright: Eike Send http://eike.se/nd 
// License: MIT License 


if (!document.getElementsByClassName) { 
    document.getElementsByClassName = function(search) { 
    var d = document, elements, pattern, i, results = []; 
    if (d.querySelectorAll) { // IE8 
     return d.querySelectorAll("." + search); 
    } 
    if (d.evaluate) { // IE6, IE7 
     pattern = ".//*[contains(concat(' ', @class, ' '), ' " + search + " ')]"; 
     elements = d.evaluate(pattern, d, null, 0, null); 
     while ((i = elements.iterateNext())) { 
     results.push(i); 
     } 
    } else { 
     elements = d.getElementsByTagName("*"); 
     pattern = new RegExp("(^|\\s)" + search + "(\\s|$)"); 
     for (i = 0; i < elements.length; i++) { 
     if (pattern.test(elements[i].className)) { 
      results.push(elements[i]); 
     } 
     } 
    } 
    return results; 
    } 
} 

然後你可以使用getElementsByClassName方法爲正常:

var elements = document.getElementsByClassName('myClass'); 
for(var i = 0; i < elements.length; i++) { 
    if(elements[i].checked) { 
     //do something here. 
    } 
} 

您需要選擇的每個元素將應用myClassclass="myClass"class="something something myClass"

相關問題