【问题标题】:How to checkbox enable/disable with Struts 2如何使用 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>

【问题讨论】:

    标签: javascript jquery jsp checkbox struts2


    【解决方案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; tagonchange 属性用于

    在渲染的 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 2019-03-31
      • 2013-10-11
      • 2021-03-07
      • 2019-01-23
      • 1970-01-01
      相关资源
      最近更新 更多