如何在Struts 2中启用/禁用复选框



我想在我的页面中显示2个复选框(称为box1box2)。默认为"box1 = false"one_answers"box2 = false"。但我也必须启用box2只有box1 = true。因此,我创建了以下JS函数:

function myTest() {
var check = document.getElementById('box1');
if (check.checked == false) {
$('#box2').prop('disabled', true);
} else {
$('#box2').prop('disabled', false);
}
}

现在我真的不明白如何在JSP文件中使用myTest函数。我已经尝试使用它与onload="myTest()"如下,但它不工作(box2总是禁用)。

<body onload="myTest()" />
<div class="form-group row">
<label class="col-sm-3 col-form-label required">
<s:text name="box1" />
</label>
<div class="col-sm-9">
<s:checkbox id="box1" name="box1"> </s:checkbox>
</div>
</div>
<div class="form-group row">
<label class="col-sm-3 col-form-label required">
<s:text name="box2" />
</label>
<div class="col-sm-9">
<s:checkbox id="box2" name="box2"></s:checkbox>
</div>
</div>

似乎你在页面中使用jQuery。这是我的解决方案。

<script type="text/javascript">
$( document ).ready(function() {
// on page load unchecking and disabling box2
$("#box2").prop("checked", false);
$("#box2").prop("disabled", true);
});

$("#box1").on("change", function(){
if ($(this).prop("checked")){
// box1 is checked
$("#box2").prop("disabled", false);
}
else{
// box1 is not checked
$("#box2").prop("checked", false);
$("#box2").prop("disabled", true);
}
});
</script>

<s:checkbox>标签有onchange属性,用于

在呈现的html元素上设置html onchange属性

这个标签生成一个checkbox类型的简单输入字段。

呈现类型为checkbox的HTML输入元素,由ValueStack的指定属性填充。

动作bean位于ValueStack的顶部,因此您可以在那里获得指定的属性。

要在JSP中定义JS函数,您应该使用html<script>标记。您可以在<head>标记中或在渲染元素之后执行此操作。
<s:checkbox id="box1" name="box1" onchange="myTest()"/>
<s:checkbox id="box2" name="box2" %{box1?'':'disabled="disabled"'}/>
<script>
function myTest() {
if ($(this).prop("checked") === "checked") {
$("#box2").removeAttr("disabled");
} else {
$("#box2").attr("disabled","disabled");
}
}
</script>

最新更新