【问题标题】:making form elements disappear with javascript使用 javascript 使表单元素消失
【发布时间】:2012-07-02 15:38:24
【问题描述】:

我对 javascript 有点陌生。我有一堆用于 html 表单的复选框。复选框是从 python 脚本动态生成的。我拥有的最后一个复选框名为“N/A”,我想这样做,以便如果选中任何其他复选框,“N/A”复选框会自动消失。如果选中 N/A 复选框,其他复选框将消失。当然,如果我取消选中这些框,则会发生相反的情况。我知道我需要为不同的输入字段分配不同的 id,以便 javascript 可以识别它们,但我不确定如何编写 javascript 以使实际消失动作发生。 谢谢。

编辑;;一些动态python代码:

print "<blockquote><strong>Labels:</strong><br/>"
for elem in output_list:
    if elem not in non_delete_list:
        print "<input type=\"checkbox\" name=\"remove_cd\" value=\"" + elem + "\" />" + elem + "<br/>"
print "<input type=\"checkbox\" name=\"remove_cd\" value=\"r_on\" />N/A:"
print_reason_list()
print "<font color=\"#cc0000\">Reason Required</font><hr/>"

所以基本上,任何带有 value=elem 部分的东西都是动态的,最后的复选框是 N/A (value="r_on")。

编辑 2:

因此,感谢@Ankit(使用 document....style.display= "none"),我能够让这些框消失。我遇到的问题是,一旦选中一个框,相应的 id 就会永久隐藏。为了解决这个问题,我做了一个隐藏和取消隐藏功能,我的 onclick 看起来像:

"onclick=if(this.checked){hide("NA")}else{unhide("NA")}" 

这使我可以取消选中这些框并导致相应的标签重新出现。但是,我遇到了一个新问题。使用 value elem 的复选框。如果我选中两个框,然后取消选中其中一个框,“NA”会再次出现。只要选中了一个“elem”框,我就希望它保持隐藏状态。基本上,我需要重新扫描所有复选框以查看它们的当前状态(我认为)。我该怎么做?

【问题讨论】:

  • 你是直接使用 JavaScript 还是使用 jQuery 之类的 JavaScript 框架?
  • 在要隐藏的元素周围放置一个 div,并在您希望隐藏时以编程方式将属性 hidden 添加到该 div。或者根据需要添加和删除div。

标签: javascript python html forms


【解决方案1】:

您可以通过 javascript 启用/禁用 html 元素:

document.getElementById('<the id of your checkbox here>').disabled = true;

对于您的情况,只需在动态复选框周围放置一个 div 标签,然后根据您的需要添加/删除该 div。

例子:-

print "<blockquote><strong>Labels:</strong><br/>"

for elem in output_list:
    if elem not in non_delete_list:
        print "<div id=\"listBox\" >"
        print "<input type=\"checkbox\" name=\"remove_cd\" value=\"" + elem + "\" onclick=\"if(this.checked){myFunction("upperChkBoxes")}\" />" + elem + "<br/>"
        print "</div>"
print "<input type=\"checkbox\" name=\"remove_cd\" value=\"r_on\"  onclick=\"if(this.checked){myFunction("NA")}\"  />N/A:"
print_reason_list()
print "<font color=\"#cc0000\">Reason Required</font><hr/>"


function myFunction(par){
// put your logic of add/remove here based on par value as "upperChkBoxes" or "NA"
}

希望对您有所帮助。

【讨论】:

  • 所以基本上,我会将类似这样的内容放在标头中的 javascript 函数中。然后用“onClick”之类的东西调用它?如果我取消选中某个框,它会重新启用它吗?
  • 发布了一些应该有帮助的代码。您需要根据需要将逻辑放入 myFunction(.) 中。请注意在复选框(和单选按钮)上使用 onclick 和 onchange 之间的区别。 OnClick 发生在更改发生之前,因此如果您单击当前选中的复选框,onclick 将看到该框已选中,而 onchange 将看到它未选中。
  • 它让我走得很远。我在上面对一个新问题进行了编辑。你能看看吗?谢谢。
  • 我在这里看到了你的观点。那么在这种情况下可以做的是首先使用 var elements = document.getElementById('listBox').children 获取 div 内的所有复选框;并且只需遍历元素以查看是否检查了任何内容。希望这会有所帮助。
【解决方案2】:

您可以使用 css 属性 display none 显示或隐藏 html 元素

让它消失

document.getElementById('<the id of your checkbox here>').style.display = "none";

或显示回来

document.getElementById('<the id of your checkbox here>').style.display = "block";

如果您使用的是 jquery,您可以轻松地使用它来完成相同的操作

$('#id of the checkbox').hide() or $('#id of the checkbox').show() 

【讨论】:

  • 我有点困惑如何让点击动作区分是否调用消失函数或显示函数。我会使用 onSelect=... 属性吗?
  • 我猜你应该使用 onclick 而不是 onselect
猜你喜欢
  • 2018-10-06
  • 2017-09-13
  • 2020-07-29
  • 1970-01-01
  • 1970-01-01
  • 2016-11-08
  • 2017-01-23
  • 2022-09-27
  • 2013-11-27
相关资源
最近更新 更多