在Struts2中隐藏文本字段和标签

时间:2016-09-27 16:08:34

标签: html jsp struts2 themes struts-tags

我试图通过使用以下方法隐藏Struts 2中的标签和字段

方法#1

<s:textfield style="display:none;" label="test">

它只隐藏文本框而不隐藏标签。

方法#2

<s:form theme="simple">
    <div style="display:none;" id="test">
        <s:label>test</s:label>
        <s:textfield>
    </div>

它隐藏了标签和字段。

无论如何在Struts2中不使用theme隐藏标签和文本字段?

我正在寻找这个,因为我正在尝试向现有表单添加新字段。如果我使用theme,那么我现有的所有样式都会受到干扰。

3 个答案:

答案 0 :(得分:0)

您正在创建隐藏字段并为其指定一些文本值。即隐藏的文本字段 而不是你可以直接使用下面的标记在Struts2中创建一个隐藏字段:

<s:hidden name="url" label="" value="http://google.co.in/" />

<s:hidden>呈现一个隐藏类型的HTML输入元素,由ValueStack中的指定属性填充。
Hidden field Documentation包含<s:hidden>支持的所有参数的列表。您还可以在其中找到label作为属性。

另一种方法是,您可以更改/切换 文本字段/标签的可见性属性,具体取决于您在评论中使用查询的下拉框值使用Javascript / jQuery的。默认情况下,visibilty值为visible,因此无需添加默认值。

<s:textfield name="id" label="Product Id" cssStyle="visibility:hidden" />

要隐藏<s:label>,请使用以下代码:

<s:label cssStyle="visibility:visible" id="productLabel"/> 
<!--use the below Javascript code in your toggling logic-->
<script type="text/javascript">
    document.getElementById("productLabel").style.visibility ="hidden";
</script>

此代码将在HTML中生成,您可以使用与text-field相同的逻辑来隐藏此标签:

<label style="visibility:hidden" id="productLabel"/>

您的问题是隐藏字段和标签 <s:textfield label="destinationterminal">

<s:form>
 <div style="display: none;" id="test1">
    <s:textfield id="destinationTerminal1" label="DESTINATION TERMINAL"/>
  </div>
</s:form>

使用以下JQuery代码:

$('label[for=destinationTerminal1], input#destinationTerminal1').hide();

答案 1 :(得分:0)

Columbus'Egg 是:仅对标记使用theme,而不是整个表单:

<s:form>
    <div style="display:none;" id="test">
        <s:label>test</s:label>
        <s:textfield theme="simple">
    </div>

这不会影响其他任何事情。

答案 2 :(得分:0)

我在我使用的Struts2测试应用程序上运行了一个假数据演示:

Struts JSP:

<s:form>
<s:select label="Reason"
    headerKey="-1" headerValue="Select a Reason"
    list="#{'1':'Site Bug', '2':'Other'}"
    name="reason"
    value="0" />
<s:textfield name="textField" label="Other"></s:textfield>
</s:form>

JavaScript演示:

$('select[id=_reason]').change(function() {
  var value = this.options[this.selectedIndex].value;
  $('label[for=_textField]').hide();
  $('input[id=_textField]').hide();
  if (value && $.trim(value) === '2') {
    $('label[for=_textField]').show();
    $('input[id=_textField]').show();
  }
}).trigger('change');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="" action="" method="post">

  <label for="_reason">Reason</label>
  <select name="reason" id="_reason">
    <option value="-1">Select a Reason</option>
    <option value="1">Site Bug</option>
    <option value="2">Other</option>
  </select>

  <br>
  <br>
  <label for="_textField">Other</label>
  <input type="text" name="textField" value="" id="_textField">
</form>

您必须根据您的表单调整id值,并根据您选择的选项值调整(value && $.trim(value) === '2')该行。

相关问题