【问题标题】:Using Javascript to Process A Form With Multiple Checkboxes [closed]使用 Javascript 处理具有多个复选框的表单 [关闭]
【发布时间】:2013-03-09 15:22:51
【问题描述】:

基本上,我有一个包含多个选项的表单,每个选项都会过滤结果,直到您有特定的结果,它使用 javascript 来执行此操作。

我的问题是我在表单中有一个带有多个复选框的部分,我想要做的是检查每个复选框是否被选中并在选中时显示一些数据。但是可以检查不止一个。

不能使用任何类型的框架,所以请不要建议,而且我不想要任何大块代码(只有解释清楚的代码),我需要这个向我解释,然后我可以编写自己的代码(所以我可以学习),我只是不知道如何去做。

对所需 Javascript 的任何解释都会有所帮助。

编辑:这是我到目前为止的代码:

function jobs() {
    var shownursing = document.getElementById('nursing-block');

    if (document.getElementsByName("nursing")[0].checked) {
        console.log("hi")
        shownursing.style.display = 'block';
        return true;
    } else { 
        console.log("no")
        shownursing.style.display = 'none';
        return false;
    }
}

jobs();

【问题讨论】:

  • 事件处理程序 - '改变'。
  • 你说你“不想要任何代码”但是 javascript 是代码 - 所以没有代码的代码?或者你可以改写为“只有很好解释的代码”?
  • 尝试将事件处理程序添加到复选框中:<input type="checkbox" id="box" onclick="javascript: alert('You clicked it')"> 您还可以使用 javascript 了解该框是否被选中:document.getElementById('box').checked
  • @raina77ow 您应该为复选框/单选按钮使用click 事件
  • @raina77ow stackoverflow.com/questions/3117716/… 和其他几个来源

标签: javascript html forms loops checkbox


【解决方案1】:

基本上,您希望在选中复选框时产生一些功能,对吗?您最好的选择是编写一个函数(或一组函数)以在选中复选框时调用。该函数将决定响应复选框显示什么。

我认为您需要与已有代码的主要区别在于您需要将函数调用附加到被选中的复选框的操作上。要在不使用 jQuery 或任何其他框架的情况下以这种方式附加函数,您可以在复选框的 html 中包含 onClick 属性:

<input type="checkbox" id="ch1" onclick="jobs();" />

或者,如果您希望在单击按钮时执行该功能,您可以将其附加到该按钮的onclick。或者,如果您希望它在页面加载时执行,您可以通过在函数外部包含以下代码来实现:

window.onload=jobs;

您还可以结合使用上述方法,在页面加载以及单击复选框或按钮时执行该功能。

jobs() 中,您可以通过访问DOM 元素并获取.checked 属性来检查复选框的值。请注意,为每个复选框设置一个单独的 id 并以这种方式进行检查是更好的做法(从长远来看,与使用 document.getElementsByName() 生成的数组相比,您遇到的错误要少得多:

if (document.getElementById("ch1").checked)
{
   //take actions related to this checkbox being checked
}

由于您要检查多个复选框,因此您将有几个这样的 if 语句(假设它们是独立的)。如果需要将它们作为一个单元进行处理(即选中两个复选框所做的事情与单独选中每个复选框所做的组合不同),那么您可以在这些 if 语句中设置一些控制变量,然后使用最后的switch语句来控制最终的执行。

【讨论】:

  • 但这不是仅在单击复选框时才运行该功能吗?如果不是,它将永远不会运行?
  • 是的,这将在单击复选框时运行该函数。您希望该函数何时运行?
  • 查看我的编辑 - 除了选中复选框时,我还提供了一些替代方法来执行该功能。
  • 谢谢你到目前为止提供了很大的帮助,但是我的 javascript 是一个外部文件,所以我收到一个参考错误,说尚未定义?
  • 您需要确保在您的函数定义加载后调用window.onload=jobs;。这意味着如果你把它放在你的外部文件中,它需要放在最后。如果你把它作为一个单独的脚本标签放在你的 html 中,它需要在你的脚本标签之后加载外部文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-24
  • 2018-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多