基于jquery的文本框与autocomplete结合使用(asp.net+json)

题目中所提到的“基于jquery的文本框与autocomplete结合使用(asp.net+json)”是一种前端技术组合,目的是实现输入框根据用户输入联想出可能的选项,这个功能在很多网站的搜索框和查询框中都有应用。

实现这个功能的主要步骤如下:

  1. 引入jQuery和jQueryUI两个 js 文件,jQueryUI是为了提供 autocomplete 的功能。
<!-- 引入jquery和jqueryUI的cdn地址-->
<script src="//cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script src="//cdn.bootcss.com/jqueryui/1.12.1/jquery-ui.min.js"></script>
<link href="//cdn.bootcss.com/jqueryui/1.12.1/jquery-ui.min.css" rel="stylesheet">
  1. 在页面中添加输入框,并给输入框设置 id 属性,使 jQuery 能够找到这个输入框。
<body>
<input type="text" id="inputTextBox"/>
</body>
  1. 编写 jQuery 代码,调用 autocomplete 方法,通过 ajax 获取后台数据,实现刷新选项的功能。
$(document).ready(function () {
$("#inputTextBox").autocomplete({
source: function (request, response) { // request参数包含了当前输入框的值。
$.ajax({
type: "POST", //调用web 页面的方式:post或get
dataType: "json", //返回json格式的数据
contentType: "application/json;charset=utf-8",//contentType发送信息至服务器时内容编码类型。
url: "ProcessJsonData.aspx/GetSelectedValue", // 调用的web页面地址
data: JSON.stringify({ prefixText: request.term }), //标的目的是将值转换成json格式的信息
success: function (data) {//回调函数
response($.map(JSON.parse(data.d), function (item) { // 将字符串转换成json格式数组,调用response方法刷新选择项。
return { label: item, value: item };
}))
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
},
minLength: 2, // 输入框中至少输入2个字符才启动联想功能。
autoFocus: true // 自动聚焦。
});
});

让我们通过两个示例演示这个过程。

示例1: 实现一个输入框,当用户输入‘a’时,联想出可能的选项:‘aaa’, ‘abc’, ‘apple’;当用户输入‘b’时,联想出可能的选项: ‘bbc’, ‘bee’, ‘banana’ 。

首先在 asp.net 项目中新建一个 .aspx 页面,名为 ProcessJsonData.aspx,页面类型选择 ScriptService,如下所示:

<%@ WebService Language="C#" CodeBehind="ProcessJsonData.aspx.cs" Class="WebApplication1.ProcessJsonData" %>

接着,在 ProcessJsonData.aspx.cs 文件中,新建一个名为 GetSelectedValue 的 public 静态方法(必须设置为静态方法并且设置为 public),用于返回联想选项。注意,该方法应该返回 json 格式数据。

[WebMethod]
public static string GetSelectedValue(string prefixText)
{
string result = "";
List<string> lstSelectedValues = new List<string>();
SqlConnection conn = new SqlConnection();
conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select FruitName from FruitList where FruitName like '%" + prefixText + "%'";
cmd.Connection = conn;
try
{
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
lstSelectedValues.Add(dr["FruitName"].ToString());
}
dr.Close();
}
catch
{
}
finally
{
conn.Close();
}
JavaScriptSerializer jss = new JavaScriptSerializer();
result = jss.Serialize(lstSelectedValues);
return result;
}

接着,新建一个 aspx 页面,含一个文本框和一些测试数据:

<body>
    <form id="form1" runat="server">
        <div>
            <input type="text" id="txtSelectedValue" />
        </div>
    </form>
</body>

<!--假设我们的数据源是下面这个水果列表-->
CREATE TABLE [dbo].[FruitList](
[FruitID] [int] IDENTITY(1,1) NOT NULL,
[FruitName] [varchar](50) NOT NULL,
CONSTRAINT [PK_FruitList] PRIMARY KEY CLUSTERED 
(
[FruitID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

接着,添加以上的 jQuery 代码即可。

示例2:实现查询框,用户输入关键词后模糊匹配数据库中的历史订单号,并展示在下拉菜单中,支持用户快速选择历史订单号。

与 示例1 的步骤相似,除了在 asp.net 项目中的 ProcessJsonData.aspx.cs 文件中的 GetSelectedValue 函数实现上可对 sql 语句进行修改,使其与数据库中的数据兼容,并透过 orderby 来按时间倒序排列历史订单号,如下所示:

[WebMethod]
public static string GetSelectedValue(string prefixText)
{
    string result = "";
    List<string> lstSelectedValues = new List<string>();
    SqlConnection conn = new SqlConnection();
    conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
    SqlCommand cmd = new SqlCommand();
    cmd.CommandText = "select distinct OrderID from OrderInfo where OrderID like '%" + prefixText + "%' order by OrderDate DESC";
    cmd.Connection = conn;
    try
    {
        conn.Open();
        SqlDataReader dr = cmd.ExecuteReader();
        while (dr.Read())
        {
            lstSelectedValues.Add(dr["OrderID"].ToString());
        }
        dr.Close();
    }
    catch
    {
    }
    finally
    {
        conn.Close();
    }
    JavaScriptSerializer jss = new JavaScriptSerializer();
    result = jss.Serialize(lstSelectedValues);
    return result;
}

接着,新建一个 aspx 页面,含一个文本框和一些测试数据:

<body>
    <form id="form1" runat="server">
        <div>
            <input type="text" id="txtSelectedValue" />
        </div>
    </form>
</body>

<!--假设我们的数据源是下面这个订单列表-->
CREATE TABLE [dbo].[OrderInfo](
    [OrderID] [varchar](50) NOT NULL,
    [OrderDate] [datetime] NOT NULL,
 CONSTRAINT [PK_OrderInfo] PRIMARY KEY CLUSTERED 
(
    [OrderID] ASC,
    [OrderDate] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

接着,添加以上的 jQuery 代码即可。

以上就是“基于jquery的文本框与autocomplete结合使用(asp.net+json)” 的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于jquery的文本框与autocomplete结合使用(asp.net+json) - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 如何使用jQuery在移动视图中隐藏一个HTML元素

    首先,在移动视图中隐藏一个HTML元素可以通过jQuery的hide()方法实现。hide()方法将元素的display属性设置为none以隐藏它。 以下是使用jQuery隐藏HTML元素的步骤: 1.将jQuery库添加至HTML文件中。例如: <script src="https://cdn.bootcdn.net/ajax/libs/j…

    jquery 2023年5月12日
    00
  • 基于jQuery实现左右div自适应高度完全相同的代码

    实现左右div自适应高度完全相同是前端开发中常见的需求,通过jQuery可以轻松实现该功能。下面是具体的实现攻略。 步骤一:设定HTML结构 首先,需要在HTML页面中设定两个div容器,分别设置 ID 属性值为 left 和right,并设置宽度为 50%。左右两个容器之间是并列关系。 <div id="left" style=&…

    jquery 2023年5月27日
    00
  • jquery中的on方法使用介绍

    当我们需要给一个动态生成的元素添加事件时,常常会遇到无法直接为该元素绑定事件的问题。这时候,jQuery中的on()方法可以很好的实现这一需求。 on() 方法介绍 on方法是jQuery中用来绑定事件的方法,它可以绑定所有事件类型。 语法 $(selector).on(event,childSelector,data,function) 参数说明 even…

    jquery 2023年5月28日
    00
  • jQWidgets jqxNavigationBar expandMode属性

    以下是关于 jQWidgets jqxNavigationBar 组件中 expandMode 属性的详细攻略。 jQWidgets jqxNavigationBar expandMode 属性 jQWidgets jqxNavigationBar 的 expandMode 属性用于设置导航栏中项的展开模式。 语法 // 设置 expandMode 属性 $…

    jquery 2023年5月12日
    00
  • 如何使用jQuery改变占位符文本

    以下是两个示例,演示如何使用jQuery改变占位符文本: 示例1:使用.attr()函数 以下是一个示例,演示如何使用.attr()函数来改变占位符文本: <!DOCTYPE html> <html> <head> title>jQuery .attr() Function Example</title>…

    jquery 2023年5月9日
    00
  • VUE中操作dom元素的几种方法(最新推荐)

    VUE中操作dom元素的几种方法(最新推荐) 在 Vue 中操作 DOM 元素有很多种方法,包括传统的方式和现代的 Vue 方式。本文将介绍一些最新推荐的方法。 1. Vue 自带指令 Vue自带的指令能够在模板中通过简单的语法实现 DOM 操作,支持的指令包括:v-show、v-if、v-else、v-for、v-bind、v-model、v-on、等等。…

    jquery 2023年5月19日
    00
  • 一文带你详细了解jQuery

    一文带你详细了解jQuery jQuery是一款非常流行的JavaScript库,它简化了JavaScript代码的编写,使得开发者可以快速、高效地操作HTML文档,并实现复杂的交互效果。本文将带你从基础知识到实战应用,一步步详细了解jQuery。 基础知识 引入jQuery 在网页中使用jQuery,需要先引入jQuery的库文件。可以通过以下两种方式来引…

    jquery 2023年5月28日
    00
  • jQWidgets jqxScheduler openDialog()方法

    以下是关于 jQWidgets jqxScheduler openDialog() 方法的详细攻略。 jQWidgets jqxScheduler openDialog() 方法 jQWidgets jqxScheduler 的 openDialog() 方法用于打开日程表的编辑对话框。编辑对话框允许用户编辑程的详细信息,如主题、位置、开始时间、结束时间等。…

    jquery 2023年5月12日
    00
合作推广
合作推广
分享本页
返回顶部