Struts2文本域中的Onchange

时间:2015-06-10 07:44:30

标签: java javascript jquery jsp struts2

我希望根据我在S2 textfiled中输入的字符串获取从DB到JSP的所有记录。在输入textfiled时,我希望将所有记录作为JSP中的表格。

实施例

在textfiled中,当我输入'a'时,我想显示所有与输入字符'a'匹配的记录。假设在我的数据库中,我有一些值'name'为'abc','def','bac','dea'等。然后我想从DB中获取列值为'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);
});

2 个答案:

答案 0 :(得分:4)

尝试@RequestMapping(value="/",method=RequestMethod.GET, params="ref") public ModelAndView doGreatThings( @RequestParam(value="ref") String identifier, ServletRequest request, ServletResponse response){ // create the cookie // redirect to home page } ,它会在执行按键操作时调用JavaScript:

onkeyup

JS Bin demo

&#13;
&#13;
<s:textfield label="Search" name="keyword" id="keyword" onkeyup="search()"/>
&#13;
function myFunction() {
    var x = document.getElementById("searchText").value;
    alert(x);
}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您正在谈论的小部件称为自动完成程序(即,猜测是什么,通过键盘事件触发自动完成的文本字段)。

您可以使用javascript小部件(例如jQuery autocompleter)轻松实现此目的,而在Struts2中,您也可以选择struts2-jquery-plugin's Autompleter

在Action中,返回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>