【问题标题】:Call JS function once hidden input has value from session attribute一旦隐藏的输入具有会话属性的值,就调用 JS 函数
【发布时间】:2017-05-05 10:26:58
【问题描述】:

一旦分配的会话属性将值传递给 JSP 中的隐藏输入字段,我如何能够自动调用 JS 函数。请看下面:

Java 类:

session.setAttribute("activity1", 1);
session.setAttribute("activity2", 0);

JSP:

<table id="activityTbl" style="width: 100%; border:1px solid black;" align="center">
<thead>
    <tr>
        <td>Activity1</td>
        <td>Activity2</td>
    </tr>
</thead>
<tbody>
    <tr>
        <td>
            <div id="actDiv1" style="border:1px solid black;"></div>
        </td>
        <td>
            <div id="actDiv2" style="border:1px solid black;"></div>
        </td>
    </tr>
</tbody>
</table>
<input type="hidden" id="act1" value="${sessionScope.activity1}"/>
<input type="hidden" id="act2" value="${sessionScope.activity2}"/>

Javascript:

 $('#act1').change(function(){
        if($(this).val() == '1'){
            $('#actDiv1').css('background-color', 'green');
        }else{
            $('#actDiv1').css('background-color', 'red');
        }
 });
 $('#act2').change(function(){
        if($(this).val() == '1'){
            $('#actDiv2').css('background-color', 'green');
        }else{
            $('#actDiv2').css('background-color', 'red');
        }
 });

一旦隐藏字段的值包含从会话属性传递的值,它将自动执行脚本。所以意思是,在传递值后,立即调用js函数。

非常感谢您的帮助,如果对此有任何其他说明,请告诉我。

【问题讨论】:

  • 我不确定,但 JSP 变量在解析 HTML 时是否只解析一次?所以你的 change 事件永远不会被调用
  • 这行不通。生成 HTML 时,会话变量被插入到隐藏字段中,服务器将输出一个 HTML 文件,其中已经填充了这些值。不会触发任何更改事件,因为您的隐藏输入不会在客户端更改。
  • session 始终保留在服务器端。并且您的 JS/网页在客户端执行。现在 JSP 引擎编译您的 JSP 并将 html 响应发送回客户端浏览器。所以像${sessionScope.activity1} 这样的代码总是会在服务器端执行。每当 html 响应到达浏览器时;它将已经填充了那些隐藏的字段。所以在你的 JS 代码中你只需要验证它们的值。

标签: javascript java jquery jsp session


【解决方案1】:

在页面加载时,输入 id="act1" 将从会话中获取值。之后,即使 session 属性中的值发生变化,也不会改变 input id="act1" 中的值。

解决方案:我假设您正在使用一些 js 来更改会话变量中的值。您可以手动将新值设置为隐藏输入,然后触发更改功能。

$('#hidden_input').val('new_value').trigger('change');

【讨论】:

    猜你喜欢
    • 2019-11-18
    • 2018-02-07
    • 2017-04-09
    • 2016-07-30
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    • 1970-01-01
    相关资源
    最近更新 更多