在同一个jsp页面中重用Text字段值

时间:2013-11-27 17:52:22

标签: java javascript jsp arraylist

如何使用我再次从GUI输入的文本字段的值进行进一步计算?我有以下代码

<tr>
  <td> Enter Index Value:</td>
  <td><input type="text" title="Enter Index#" id="ind" name="index"
             size="2" maxlength="2" /></td>
  <td><input type="text" name="bid" value=<%= lm.book_ids.get(a-1)%>
             style="visibility: hidden" /></td>
  <td><input type="text" name="brid" value=<%= lm.branch_id.get(a-1)%>
             style="visibility:hidden" /></td>
  <td><input type="text" name="cardno" value=<%= lm.cards.get(a-1)%>
             style="visibility: hidden" /></td>
</tr>

我想使用text字段的值代替'a',这是一个任意的java int变量。

1 个答案:

答案 0 :(得分:0)

您无法以这种方式更改变量。您的scriptlet(也是bad design BTW)只会在JSP文件呈现为HTML时运行一次。当用户加载页面时,只有scriptlet提供的数据在HTML中保留为文本。

您必须在页面加载时将整个数据结构保存到Javascript数组中,并根据索引继续交换数据,或者使用AJAX从服务器获取新数据。

*编辑*

以下是一个例子:

<head>
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

     <script type="text/javascript">
        $(document).ready(function() {
            var indexField = $("#ind");
            var bidArray = new Array();
            bidArray[0] = '<%= lm.book_ids.get(0) %>';
            bidArray[1] = '<%= lm.book_ids.get(1) %>';

            indexField.keyup(function() {
                var index = indexField.val();
                var bid = bidArray[index];

                if (bid !== undefined) {
                    $("#bid").val(bid);
                }
            });
        });
    </script>
</head>

[...]

<tr>
    <td>Enter index value:</td>
    <td><input type="text" title="Enter Index#" id="ind" name="index"
               size="2" maxlength="2" /></td>
    <td><input type="hidden" id="bid" name="bid" /></td>
</tr>

JSfiddle