【问题标题】:readOnly attribute not being set with JavaScript function in Struts 2Struts 2 中的 JavaScript 函数未设置 readOnly 属性
【发布时间】:2013-04-03 21:41:36
【问题描述】:

我正在尝试创建一个编辑链接,以便在单击它时以只读模式打开该行的详细信息。

这是链接:

<c:set var="deletableBook" value="0"/>

<a href="" title="Edit Book Info" onClick='resetDateAndMakeReadOnly(${deletableBook}); return performAction(${item.bookId}, "bookEdit");'>Edit</a>

下面是被调用的函数:

function resetDateAndMakeReadOnly(allEditable) {      
 var e22 = document.getElementById('book_Date');
 var e3 = document.getElementById('book_type');
 var e4 = document.getElementById('book_Number');
 if (allEditable){
     e22.readOnly=false;
     e3.disabled=false;
     e4.readOnly=false;
     alert("read and write");
 } else {
     e22.readOnly=true;
     e3.disabled=true;
     e4.readOnly=true;
     alert("readOnly new");
 }
 e22.value = "<c:out value='${params.book_Date}'/>";
 return false;    }

目前运行此方法时似乎没有任何变化。我已经确认它符合逻辑的正确部分,但仍然可以编辑。

【问题讨论】:

  • @gdoron 抱歉更新了描述。基本上将其设置为 readOnly 似乎不会使其成为只读
  • 这不会生成重复的 ID(如果您有多行)?还要确保你的后端标签被解析成你期望的 HTML 和值。

标签: javascript jsp struts2 ognl


【解决方案1】:

这是因为您正在使用带有空 href 的链接来触发您的 javascript 函数,该函数将重新加载您的页面。在href 中使用javascript:void(0);

<a href="javascript:void(0);" title="Edit Book Info" onClick='resetDateAndMakeReadOnly(${deletableBook}); return performAction(${item.bookId}, "bookEdit");'>Edit</a>

【讨论】:

    【解决方案2】:

    属性deletableBook 不是布尔值,也不是您在javascript 函数中所期望的false。在动作中切换变量

    session.put("allEditable", !(session.get("allEditable")==null?Boolean.FALSE:(Boolean)session.get("allEditable")));
    

    然后使用

    $(document).ready(function(){
        resetDateAndMakeReadOnly(<s:property value="%{#session.allEditable}"/>);
    });
    

    这将在重新加载页面时根据allEditable 重置字段属性。但是这个

    <s:a href="" title="Edit Book Info" onClick="resetDateAndMakeReadOnly(%{#session.allEditable});">Make readonly</s:a>
    

    不会重新加载页面并保留您在allEditable 会话属性中的值。该语法可能有点混淆 IDE,但正确评估 OGNL 表达式并呈现为

    <a title="Edit Book Info" onClick="resetDateAndMakeReadOnly(false);">Make readonly</a>
    

    没有href 属性,这就是页面没有重新加载的原因。

    JSP 中的元素也应该可以通过设置id 属性找到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-04
      • 1970-01-01
      • 2015-03-22
      • 1970-01-01
      相关资源
      最近更新 更多