0

我有以下功能,当页面上有一个产品时效果很好:

<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>

如果未选中条款和条件的复选框,则上述功能会显示错误。

现在我在页面上有多个产品都有自己的复选框,问题是如果我在每个产品旁边都放了一个复选框,那么它总是会显示错误,除非他们选中每个产品旁边的框。

任何人都可以帮我编辑该功能,以便我可以在多个复选框上使用它,但只需要检查一个框。

该函数在贝宝按钮上调用。确实有一种更简单的方法可以做到这一点,而不是重命名函数并更改每个产品的 ID?

谢谢

4

3 回答 3

1

您可以做的是通过类名获取元素,并为复选框提供一个通用的 CSS 类名。不幸的是 < IE9 不支持 getElementsbyClassName,所以我建议使用 jQuery。

function confSubmit() {
    var checkCount = $('.myclass:checked').length;
    if(checkCount < 1) {
        alert('....');
    }
}
于 2013-02-19T19:10:58.130 回答
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>
于 2013-02-19T19:17:27.063 回答
0

Diodeus 的答案是正确的,但是如果你想在没有JQuery 的情况下这样做(上帝帮助你),你只需要一个用于 getElementsByClassName() 的 polyfill:

来自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.
     }
}

您需要选择的每一个元素都myClass适用于:class="myClass"class="something something myClass".

于 2013-02-19T19:22:40.117 回答