尝试根据复选框列表选择启用/禁用<div>内的输入

时间:2016-12-04 20:55:05

标签: jquery

我使用了以下代码和单选按钮列表(通常有2个选项)。这允许我在<div>内放置另一个输入(文本框,另一个单选按钮列表等),这些输入将被隐藏,直到单击按钮为止。

<script type="text/javascript">
    $(document).ready(function () {
        $("input[name$='RadioButton1']").on ( "change", function() {

            if (this.value == "Yes") {
                $('#someDisplay, #someDisplay input').show().removeAttr("disabled");
            }
            else {
                $('#someDisplay, #someDisplay input').hide().attr("disabled", "disabled");
            }
    });
        $("#someDisplay, #someDisplay input").hide().attr("disabled", "disabled");
    });
</script>

同样,关于这一点的好处是,如果没有点击任何内容,<div>内的输入将保持禁用状态,这意味着在提交表单时没有传递任何信息(即,输入是&#34 ;空&#34;或&#34; null&#34;并且不需要保存任何内容。)

现在我正在尝试使用此代码来处理复选框列表。不幸的是,如果您单击所有复选框,它将仅显示最后一次单击的复选框<div>,即使单击了先前的复选框。我尝试使用JQuery toggle(),虽然它会显示/隐藏与所点击内容相对应的<div>,但问题是如果您取消选中复选框,{{1}内的输入将保持启用状态。对不起,如果我不清楚。这是我试过的:

<div>

我当时认为它可能是<script type="text/javascript"> $(document).ready(function () { $("input[name$='Checkbox1']").on ( "change", function() { if (this.value == "Choice 1") { $('#someDisplay1, #someDisplay1 input').show().removeAttr("disabled"); } else { $('#someDisplay1, #someDisplay1 input').hide().attr("disabled", "disabled"); } if (this.value == "Choice 2") { $('#someDisplay2, #someDisplay2 input').show().removeAttr("disabled"); } else { $('#someDisplay2, #someDisplay2 input').hide().attr("disabled", "disabled"); } }); $("#someDisplay1, #someDisplay1 input").hide().attr("disabled", "disabled"); $("#someDisplay2, #someDisplay2 input").hide().attr("disabled", "disabled"); }); </script> 的逻辑。

这是复选框输入html:

if/else

提前感谢您的帮助。

编辑:添加隐藏的<ol> <li> <label> <input name="Checkbox1" type="checkbox" value="Choice 1" data-val="true"> Choice 1 </label> </li> <li> <label> <input name="Checkbox1" type="checkbox" value="Choice 2"> Choice 2 </label> </li> </ol> : EDIT2:意外删除<div>

disabled="disabled"

1 个答案:

答案 0 :(得分:1)

也许你可以使用像

这样的东西
from Tkinter import *
import os

root = Tk()
termf = Frame(root, height=1300, width=1000)

termf.pack(fill=BOTH, expand=YES)

wid = termf.winfo_id()
font = "'dejavu serif'"
os.system('xterm -into %d  -geometry 70x60 -sb  -fa -%s- & ' % (wid, font))
root.mainloop()

概念是在提交表单之前擦除所有隐藏的表单元素。 .filter(“:hidden”)是一个JQuery扩展,所以我们首先使用更快的$(“input”)选择器,然后使用过滤器对结果进行操作。隐藏查看元素本身及其祖先以确定元素是否被隐藏。

这当然会删除那些隐藏的元素,因此如果您通过Ajax提交并需要重新使用它们,您可以创建一个新表单并将可见表单元素克隆到其中。