JSP中的自动完成文本框

时间:2019-07-18 07:46:29

标签: java jsp autocomplete textbox

我有一个数据库,其中包含以下表值:

数据库:staff_details

    staffname

    Arun
    Suresh
    Ankita
    Tina

我希望使用数据库中的值自动完成文本框。例如,如果我在文本框中输入“ a”,则它应显示数据库中所有以字母“ a”开头的名称。现在,它将显示所有包含“ a”字母的名称。 即  如果我在文本框中键入“ a”,则列表应仅包含“ Anikta”和“ Arun”。

当我在文本框中输入字母“ a”时,我当前的列表包含Arun,Anikta和Tina。

如何显示以文本框中输入的字母开头的数据库值作为列表

我尝试过的事情:

          <label for="validationDefaultUsername">Authors </label>     
           <% 
           Connection con=null;                
           con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","root");    

           PreparedStatement ps1= con.prepareStatement("select staffname from staff_details ");              
           ResultSet rs=ps1.executeQuery();           
           %>      
          <input type="text" class="form-control"  name="prepared_by" id="auth" placeholder="Author " list="a_data" id="auth"   required>
          <%

           %>      
          <datalist id="a_data">
               <%while(rs.next())
                    { %>                   
                        <option value="<%= rs.getString(1) %> "> </option>
                        <%
                    }
                    %>
          </datalist>
               </div>

1 个答案:

答案 0 :(得分:0)

您需要在查询中使用 LIKE 运算符,因此您的代码将如下所示:

        <% 
           Connection con=null;                
           con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","root");    

           PreparedStatement ps1= con.prepareStatement("select staffname from staff_details where staffname  LIKE ? ");  
            ps1.setString(1, search + "%");
                           //^ passing value to placeholder  & here "%"<- can be any letter   
           ResultSet rs=ps1.executeQuery();           
           %>      

另外,请参考我的answer使用ajax进行此操作。