【问题标题】:Why display:none does not hide Struts 2 tag like <s:textfield>为什么 display:none 不隐藏像 <s:textfield> 这样的 Struts 2 标签
【发布时间】:2014-06-23 09:08:56
【问题描述】:

我想知道为什么div 标记无法隐藏 Struts2 标记,我使用的是 div,它应该在加载时隐藏,而 onChange 我正在调用 jQuery,它会切换 div 标记。 .

<%@ taglib prefix="s" uri="/struts-tags" %>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" >
$( document ).ready(function() {
    $("#t").click(function(){
        alert("I Know Its Not Working");
        $('#tt').toggle();
    });
    });
    </script>
</head>
<body>
<s:form >
<div style="display: none;" id="tt">
<s:textfield></s:textfield>
</div>
</s:form>
<input type="button" id="t">
</body>
</html>

【问题讨论】:

  • 你的 div 开始隐藏,所以你看不到你的

    ,但你看到 加载?这是问题吗?

  • 没有 Andrea,我可以隐藏 Html 标签...即使我可以在 div 中显示 Html 标签(OnToggle) ....struts2 标签的问题..:( 你可以尝试把s:textfiled 在 div 中并切换它...:) :)
  • 是的,但是一旦 JSP 被渲染,你的 将被翻译成 。所以我还是不明白你的问题是什么:|
  • @AndreaLigios 你可以做这样的事情......创建一个 struts2 表单......
    然后使用 jquery 切换 div....请尝试这样做...
  • @AndreaLigios 主要是它应该在 s:form(div tag) 内

标签: jquery css jsp struts2 struts-tags


【解决方案1】:

默认情况下,Struts2 使用xhtml 主题来生成表单字段的html 内容,例如textfield 标签。这个主题使用&lt;table&gt; 布局和&lt;tr&gt;&lt;td&gt; 作为输入元素。这会破坏您的设计,因为这些元素位于&lt;div&gt; 标记之外。如果您想在输入字段中使用&lt;div&gt; 而不是&lt;tr&gt;&lt;td&gt;,那么您可以选择css_xhtml 主题。如果您想省略生成&lt;tr&gt;&lt;td&gt;&lt;div&gt;,那么您可以使用simple 主题。例如

<s:form theme="simple">
 <div style="display: none;" id="tt">
   <s:textfield name="myfield" />
 </div>
</s:form>

参考资料:

【讨论】:

    【解决方案2】:

    我测试过。为我工作 100% :)

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
        <title>Insert title here</title>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
        <script>
        $(document).ready(function(){
            //jquery methods go here...
    
    
      $("#btnhidediv").change(function(){
    
            $("#togglediv").toggle();
    
        });
    
    
    
    });
    </script>
    
    
    
    </head>
    <body>
    <form>
    <div  id="togglediv" style="display: none;">
    <s:textfield  type="text" name="xyz" key="xyz" size="11" label="xyz"></s:textfield><br />
    
    <p>Hieeeeeeeeeee</p>
    
    </div>
    <input type="text" id="btnhidediv">
    </form>
    <body>
    </html>
    

    【讨论】:

    • 哈哈 很抱歉告诉这个...你能把那个 div 放在 s:form 中然后运行吗...???实际上我忘了放 form...看起来像白羊座 s 的问题:form
    • @MSR 你正在做一些不同的事情,不使用&lt;s:form&gt; 标签,它会呈现一个表格。
    • @goodyzain 请仅使用单个标点符号,除非在极少数情况下它们实际上很重要。在这里,它们只是噪音。
    • @DaveNewton 是的...:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    • 2021-03-10
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    相关资源
    最近更新 更多