Struts2 文本字段中的更改

Onchange in Struts2 textfield

我想根据我在 S2 文本文件中输入的字符串将所有记录从 DB 获取到 JSP。在仅输入文本文件时,我想将所有记录作为 table in JSP.

例如:

在 textfiled 中,当我输入 'a' 时,我想显示所有与输入字符 'a' 匹配的记录。假设在我的数据库中,我有一些值 'name' 列为 'abc'、'def'、'bac'、'dea' 等。然后我想从数据库中获取列值为 'abc'、'bac' 和 'dea' 的所有行。 它非常像 HTML 中的 onchange 事件。 在这里我可以查询像 'select name from tablename where name like% %'。

所以在 JSP,

   No     Name     Address
  -------------------------
   1      abc      addrs1
   2      bac      addr2
   3      dea      addr3

虽然我尝试使用

<s:textfield label="Search" name="keyword" id="keyword" onchange="search()"/>

没用。

虽然我尝试

<s:textfield label="Search" name="keyword" id="keyword" onkeypress="search()"/>

它也完全不起作用。这里 onkeypress 事件机制起作用。输入 'ab' 后,只有值 'a' 会被发送到操作 class。行。有没有其他方法可以做到这一点。

$.getJSON('/test/giveMeJsonData.action ',{cartId: cartId},function(json){
    itemsHtml = "<table>";
    for (i in json.items) {
        itemsHtml += "<tr>";
        itemsHtml += "<td>" + json.items[i].id + "</td>";
        itemsHtml += "<td>" + json.items[i].name + "</td>";
        itemsHtml += "<td>" + json.items[i].address + "</td>";
        itemsHtml += "</tr>";
    }
    itemsHtml += "</table>";
    $('#cartItems').html(itemsHtml);
});

尝试onkeyup,它会在执行按键时调用JavaScript:

<s:textfield label="Search" name="keyword" id="keyword" onkeyup="search()"/>

JS Bin demo


function myFunction() {
    var x = document.getElementById("searchText").value;
    alert(x);
}
<input type="text" id="searchText" onkeyup="myFunction()">

您所说的小部件称为自动完成器(也就是说,猜猜是什么,由键盘事件触发的具有自动完成功能的文本字段)。

您可以使用 javascript 小部件轻松实现此目的(例如 jQuery autocompleter), and in Struts2 you can also opt for the struts2-jquery-plugin's Autompleter

在操作中,return 列表或数组:

public String[] getMyList() {
    return myList;
}

在JSP中,这样使用:

<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
<html>
  <head>
    <sj:head jqueryui="true"/>
  </head>
  <body>
   <sj:autocompleter list="%{myList}"/>
  </body>
</html>