繁体   English   中英

Struts2文本字段中的Onchange

[英]Onchange in Struts2 textfield

我想根据我在S2 textfiled中输入的字符串将所有记录从DB传递到JSP。 当只输入textfiled时,我想将所有这些记录作为JSP中的表获得。

例如:

在文本文件中,当我键入“ a”时,我想显示所有与键入字符“ a”匹配的记录。 假设在我的数据库中,我有一些值,其中“名称”列为“ abc”,“ def”,“ bac”,“ dea”等。 然后,我想从数据库中获取列值为“ abc”,“ bac”和“ dea”的所有行。 就像HTML中的onchange事件一样。 在这里,我可以查询“ 从表名中选择名称,其中名称如%a% ”。

因此,在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”将被发送到动作类。 好。 还有其他方法可以做到这一点。

$.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示范


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

您正在谈论的窗口小部件称为自动完成程序(即,猜猜是什么,一个由键盘事件触发的具有自动完成功能的文本字段)。

您可以使用javascript小部件(例如jQuery autocompleter )轻松实现这一目标,在Struts2中,您还可以选择struts2-jquery-plugin的Autompleter

在操作中,返回一个List或一个数组:

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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM