簡體   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