如何使用 Struts 2 启用/禁用复选框

Posted

技术标签:

【中文标题】如何使用 Struts 2 启用/禁用复选框【英文标题】:How to checkbox enable/disable with Struts 2 【发布时间】:2021-11-17 07:05:34 【问题描述】:

我想在我的页面中显示 2 个复选框(称为 box1box2)。默认值为box1 = falsebox2 = 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>

【问题讨论】:

【参考方案1】:

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

【讨论】:

如果不从ValueStack 获取属性值,您将无法任意设置它们。【参考方案2】:

&lt;s:checkbox&gt; tag 的 onchange 属性用于

在渲染的 html 元素上设置 html onchange 属性

此标签生成checkbox 类型的简单输入字段。

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

action bean 位于ValueStack 之上,因此您可以在那里获取指定的属性。

要在 JSP 中定义 JS 函数,您应该使用 html &lt;script&gt; 标签。您可以在&lt;head&gt; 标记中或在渲染元素之后执行此操作。

<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>

【讨论】:

以上是关于如何使用 Struts 2 启用/禁用复选框的主要内容,如果未能解决你的问题,请参考以下文章

单击相应复选框时如何启用禁用的锚按钮

如何在 php 中添加启用或禁用格式的复选框?

如何根据复选框状态禁用/启用提交按钮?

asp.net c#.net jquery / javascript 如何使用复选框启用或禁用 requiredfieldvalidator

wpf datagridcheckboxcolumn:如何启用/禁用复选框

如果用户从浏览器返回时具有值,如何启用默认禁用的输入