【问题标题】:Javascript validation code to make sure that at least one checkbox is markedJavascript 验证代码,以确保至少标记了一个复选框
【发布时间】:2013-06-26 16:06:41
【问题描述】:

如何添加 javascript 验证以确保至少检查一项?

从以下课程中选择:

        <ul id="class_prices">
             <li>

                <input onclick="update()" name="lbsm" id="lsbm" type="checkbox" value="lbsm">
                <label>Law &amp; Business Study Material ($59.00)</label>
            </li>

            <li>

                <input onclick="update()" name="tsm" id="tsm" type="checkbox" value="tsm">
                <label>Trade Study Material ($59.00)</label>
            </li>
            <li>

                <input onclick="update()" name="lbepc" id="lbepc" type="checkbox" value="lbepc">
                <label>Law &amp; Business Exam Preperation Class ($50.00)</label>
            </li>
            <li>

                <input onclick="update()" name="tepc" id="tepc" type="checkbox" value="tepc">
                <label>Trade Exam Preperation Class ($50.00)</label>
            </li>

        </ul>

        </td>

            <td><h2>$<span id="coursetotal"></span></h2></td>
                </tr>

这是我拥有的 javascript 代码,它不起作用。

<script type="text/javascript">
  function valthisform() {
    var chkd = document.form1.lsbm.checked || document.form1.tsm.checked||  document.form1.lbepc.checked|| document.form1.tepc.checked

    if (chkd == true) { } else { alert ("please check a checkbox") }
  }
</script>

感谢您的反馈。

【问题讨论】:

  • 你的代码很乱……而且只有几行!使用适当的缩进,以便于阅读。永远不要使用chkd == true 之类的东西。如果您确实需要测试某事是否属实,请使用if( chkd )。在您的情况下,chkd 是undefined"checked"if( chkd == true ) 在任何一种情况下都会返回 false。使用if( chkd == undefined )if( !chkd ) 并完全删除空代码块。
  • 我试过了,但它不起作用。这是我正在处理的页面。 contractorsintelligence.com/secured_payment/…

标签: javascript validation checkbox


【解决方案1】:

获取 UL 内的所有复选框,如果其中任何一个被选中,则将 chkd 变量设置为 true :

var inputs = document.getElementById('class_prices').getElementsByTagName('input'),
    chkd = false;

for (var i=inputs.length; i--;) {
    if (inputs[i].type.toLowerCase() == 'checkbox' && inputs[i].checked) chkd = true;
}

FIDDLE

【讨论】:

  • 只是想知道您是否知道使用.type.toLowerCase() 的任何理由。我从来没有见过这样的情况,即使属性是大写的,属性也不会转换为小写。再说一次,我不经常/从不做这个检查,也没有在许多/所有浏览器中测试过
  • @Ian - 嗯,好吧,我也不能说我见过大写的类型,我只是转换一些东西以确保,因为我总是倾向于 f**k比较tagNames,它们以大写形式返回!
  • 哈哈是的,我绝对知道将它用于tagName,我只是想特别想知道.type。没什么大不了的,只是想知道:)
  • 我是 javascript 新手。我试图将这些变量设置为 true,但它仍然不起作用。我是否应该将此代码发布到上面的 Javascript 中。您还提到“输入”和“复选框”,我应该用复选框的实际变量名称替换它们吗?感谢您的反馈。
【解决方案2】:

我刚刚测试了您的 javascript,它似乎按您的预期工作。脚本本身有一个问题,那就是它没有返回值。

<script type="text/javascript">
  function valthisform() {
    var chkd = document.form1.lsbm.checked || document.form1.tsm.checked||  document.form1.lbepc.checked|| document.form1.tepc.checked

    if (chkd) {
      return true; //Submit the form
    } else {
      alert ("please check a checkbox");
      return false; //Prevent it from being submitted
    }
  }
</script>

LiveValidationForm 也有一个附加到表单的提交处理程序,该处理程序可能会干扰您的处理程序和/或阻止提交表单。


有趣的事实:您的 javascript 中的 document.form1.lsbm.checked 拼写错误,因为文档中的元素的 id 拼写错误为 lsbm 而不是 lbsm

【讨论】:

  • 感谢您的意见。我尝试了您的代码,但仍然无法正常工作。无论如何,我可以修复它并进行实时验证吗?
  • 我不熟悉 LiveValidationForm。你不能以某种方式把它放在 LiveValidationForm 中吗?
  • 谢谢!该代码仅在我修复了 PHP 端后才有效。我在php中使用了if函数。
【解决方案3】:

试试这个代码..

HTML

<ul>
    <li><label><input type="checkbox" value="id1" style="margin-right: 10px;" name="class" checked> ABC</label></li>
    <li><label><input type="checkbox" value="id2" style="margin-right: 10px;" name="class" checked>XYZ</label></li>
    <li><label><input type="checkbox" value="id3" style="margin-right: 10px;"name="class" checked> LMN</label></li>
</ul>

JavaScript:

<script>
    $('input[type="checkbox"][name="class"]').on('change', function () {
        var getArrVal = $('input[type="checkbox"][name="class"]:checked').map(function () {
        return this.value;
    }).toArray();
        if (getArrVal.length) {
        //execute the code
    } else {
        $(this).prop("checked", true);
        alert("Select at least one column");
        return false;
    }
    });
</script>

【讨论】:

  • 你能解释一下你在这里做了什么吗?这有助于用户理解为什么这是一个答案。
  • 默认选中所有复选框,当我取消选中最后一个复选框时,会给出 javascript 警报消息..
猜你喜欢
  • 1970-01-01
  • 2018-10-03
  • 1970-01-01
  • 1970-01-01
  • 2017-07-27
  • 2011-03-13
  • 2015-11-06
  • 2012-10-25
  • 1970-01-01
相关资源
最近更新 更多