.NET使用js制作百度搜索下拉提示效果(不是局部刷新)实现思路

 更新时间:2021年9月22日 10:17  点击:2306
搞了个不是局部刷新的百度搜索框下拉提示效果,在被领导批了n次后,问了n次后,弄出来了,真心感觉我这个小脑壳,太不灵光了,太懒了。记录下来,以免忘记。

大致思路:前台放一个input标签,然后当该标签内的值输入有变化的时候,调用后台代码查询 符合条件的数据绑定ListBox。

具体实现思路:一个input,当输入值变化时,调用后台代码。但是怎么调用呢,这个是个问题了,在该input下放一个隐藏的服务器控件button,隐藏该控件,当input里值变化时,调用js,在js里触发该按钮的onclick事件,把具体的操作数据的代码就可以放到onclick事件里了。但是这里的隐藏不是使用visable来隐藏的,而是使用:btnHelp.Style.Add("display", "none");[ps:btnHelp按钮ID,放在Page_Load里],如果使用visable,则会造成在js里获得不到该对象。 数据是有了,可是,怎样使用上下键让ListBox里的内容显示到Input上呢,很明显,ListBox本身支持上下键的,只需要调用SelectedIndexChanged方法,然后为Input赋值即可。可是,怎么样保证光标就乖乖的听话,你按上下键它就自动跳到ListBox里呢,好吧,写js吧,当input里的值输入完成,即:onkeyup事件里写即可。

具体代码
aspx代码如下:
复制代码 代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script language="javascript" type="text/javascript">
function abc() {
var inputV = document.getElementById("in").value;
//根据浏览器判断
if (/msie/i.test(navigator.userAgent)) //ie浏览器
{
document.getElementById("lbltext").innerText = inputV;
}
else {//非ie浏览器,比如Firefox
document.getElementById("lbltext").innerHTML = inputV; //火狐等浏览器的赋值方式
}
}
function InputT() {
var f = document.getElementById("inpContent");
var abc = document.getElementById("btnHelp");
document.getElementById("btnHelp").click(); //触发Button的onclick事件
}
//为input 添加的keydown事件
function InputKeyDownFocus() {
//方向键的ASCII值:上:38,下:40
if (event.keyCode == "38" || event.keyCode == "40") {
document.getElementById("lst").focus(); //使ListBox获得焦点
}
else {
document.getElementById("inpContent").focus();
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
输入内容:
<br />
<input runat="server" id="inpContent" oninput="InputT()" onpropertychange="InputT()"
onkeyup="InputKeyDownFocus()" </br> />
<asp:ListBox runat="server" ID="lst" OnSelectedIndexChanged="lst_SelectedIndexChanged"
AutoPostBack="true"</asp:ListBox>
<asp:Button runat="server" ID="btnHelp" OnClick="btnHelp_Click" Text="隐藏按钮" />
</div>
</form>
</body>
</html>

后台cs代码
复制代码 代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
enum Direction
{
Up, Right, Down, Left
}
Direction dir;
protected void Page_Load(object sender, EventArgs e)
{
btnHelp.Style.Add("display", "none");
}
protected void lstShow_SelectedIndexChanged(object sender, EventArgs e)
{
ListBox lItem = (ListBox)sender;
string lItemValue = lItem.SelectedItem.Text;
txtInput.Text = lItemValue;
}
/// summary
/// 前台调用的方法
/// /summary
/// param name="sender"/param
/// param name="e"/param
protected void btnHelp_Click(object sender, EventArgs e)
{
string inputStr = inpContent.Value.Trim(); //文本框输入系统
Listobject listNew = new Listobject();
listNew.Add("abc");
listNew.Add("abcde");
listNew.Add("bcd");
listNew.Add("bcdef");
listNew.Add("bcdagb");
listNew.Add("bbccaa");
listNew.Add("aabbdd");
listNew.Add("ccaabbdd");
lst.Items.Clear(); //清除原有值
int i = 1;
foreach (object obj in listNew)
{
//符合条件的数据
if (obj.ToString().Contains(inputStr))
{
lst.Style.Add("display", "block");
lst.Items.Add(new ListItem(obj.ToString(), "" + i));
i++;
}
}
if (lst.Items.Count 0)
{
lst.SelectedIndex = 0;
}
inpContent.Focus();
}
/// summary
/// ListBox下拉框的值改变时
/// /summary
/// param name="sender"/param
/// param name="e"/param
protected void lst_SelectedIndexChanged(object sender, EventArgs e)
{
ListBox lItem = (ListBox)sender;
lst.Style.Add("display", "block");
string lItemValue = lItem.SelectedItem.Text;
inpContent.Value = lItemValue;
lst.Focus();
}

哦了
[!--infotagslink--]

相关文章

  • .NET使用js制作百度搜索下拉提示效果(不是局部刷新)实现思路

    搞了个不是局部刷新的百度搜索框下拉提示效果大致思路:前台放一个input标签,然后当该标签内的值输入有变化的时候,调用后台代码查询 符合条件的数据绑定ListBox,感兴趣的朋友可以了解下...2021-09-22
  • php验证码实现局部刷新

    一般在用验证码时我们都要实现局部刷新了,这个是必然的,也是提高用户体验的一点,下面我们来看一个php验证码在实际应用中的用法,有需要的朋友来参考一下。 /* * Aut...2016-11-25
  • Flutter实现局部刷新

    这篇文章主要为大家详细介绍了Flutter实现局部刷新,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-07-14
  • javascript实现下拉提示选择框

    这篇文章主要介绍了javascript实现下拉提示选择框的相关资料,需要的朋友可以参考下...2016-01-02
  • UpdatePanel和jQuery不兼容 局部刷新jquery失效

    在做项目中发现,在使用了UpdatePanel的地方,局部刷新后,jquery失效了,后来经过搜索找到不错的解决方法,在此与大家分享下,有类似问题的朋友可以参考下...2021-09-22
  • Android开发中ListView实现Item局部刷新

    在Android应用开发中,ListView数据的刷新经常用,我们都熟悉,如果我们在ListView实现Item局部刷新,刷新的同时实现下载进度条局部更新呢?本文来告诉你。 对于ListView数...2016-09-20
  • ASP.NET使用ajax实现分页局部刷新页面功能

    使用ajax方法实现分页也很简单,主要是两个,ContentTemplate和Trigger。先把listView扔ContentTemplate里面。然后在Trigger里面加入asp:AsyncPostBackTrigger,将ID指向之前的分页控件DataPager控件。具体实现代码大家可以参考下本文...2021-09-22
  • jQuery ajaxSubmit 实现ajax提交表单局部刷新

    这篇文章主要介绍了jQuery ajaxSubmit 实现ajax提交表单局部刷新 的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-07-06
  • 使用ajax局部刷新gridview进行数据绑定示例

    很多用户都有这样需求,比如:点击按钮,刷新 GridView 中的数据,而不是这个页面刷新。使用简单的 XMLHttpRequest就可以直接实现...2021-09-22
  • 解决dwz增删改查不局部刷新的办法

    下面我们来看一篇关于dwz增删改查不局部刷新,希望这篇文章能够帮助到各位朋友,具体的细节步骤如下文介绍. 一个小项目,用到了dwz,苦于官方少于维护且需要一部分前端...2016-11-25
  • ajax仿google搜索下拉提示

    <script type="text/javascript" src="prototype.js"></script> <script type="text/javascript"> //定义变量lastindex 表示为鼠标在查询结果上滑动所在位置,初始为-...2016-11-25