如何在 Struts 2 中启用/禁用 <s:checkbox>?

问题描述 投票:0回答:2

我想在我的页面中显示 2 个复选框(称为

box1
box2
)。默认值为
box1 = false
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>
javascript jquery jsp checkbox struts2
2个回答
0
投票

看来您在页面中使用了 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>

0
投票

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

在渲染的 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>
© www.soinside.com 2019 - 2024. All rights reserved.