ajax改变input框属性,ajax怎么实现输入框文字改变展示下拉列表的效果

ajax怎么实现输入框文字改变展示下拉列表的效果

发布时间:2021-07-26 18:16:59

来源:亿速云

阅读:72

作者:chen

本篇内容主要讲解“ajax怎么实现输入框文字改变展示下拉列表的效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ajax怎么实现输入框文字改变展示下拉列表的效果”吧!

1.样式

复制代码 代码如下:

2. html脚本

复制代码 代码如下:

........省略常规脚本

汽车品牌名:

disabled="disabled" οnfοcus="showAndHide('List1','show');" οnblur="showAndHide('List1','hide');"/>

必填*

........省略常规脚本

汽车厂商名:

disabled="disabled" οnfοcus="showAndHide('List2','show');" οnblur="showAndHide('List2','hide');" />

必填*

3.通过JS来实现ajax异步请求 根据输入的内容过滤

复制代码 代码如下:

//页面加载的时候

jQuery(function($) {

if (navigator.userAgent.indexOf("MSIE") > 0) {

document.getElementById('generalBrandName').attachEvent("onPropertyChange", appendList);

document.getElementById('brandName').attachEvent("onPropertyChange", appendList);

}

else if (navigator.userAgent.indexOf("Firefox") > 0) {

document.getElementById('generalBrandName').addEventListener("input", appendList, false);

document.getElementById('brandName').addEventListener("input", appendList, false);

}

});

预加载

jQuery(function($) {

txtValue = $("#generalBrandName").val();

给txtbox绑定键盘事件

$("#generalBrandName").bind("keyup", function() {

var currentValue = $(this).val();

if (currentValue != txtValue) {

appendList('List1',currentValue);

txtValue = currentValue;

}

});

txtValue = $("#brandName").val();

给txtbox绑定键盘事件

$("#brandName").bind("keyup", function() {

var currentValue = $(this).val();

if (currentValue != txtValue) {

appendList('List2',currentValue);

txtValue = currentValue;

}

});

});

//实现动态显示下拉列表内容的function

//根据输入框中的值来筛选obj中的值

function appendList(obj,value){

value = encodeURIComponent(value); value = encodeURIComponent(value); //两次使用encodeURI()

switch(obj){

case "List1": //根据车品牌名来刷选List1中的值

$.getJSON(

ctx + "/car/carmodel/**.do",

{keyWord : value, id : new Date().getTime()},

function (json) {

createLis('ListLi1',json);

}

);

break;

case "List2": //根据车厂商名来刷选List2中的值

$.getJSON(

ctx + "/car/carmodel/**.do",

{keyWord : value, id : new Date().getTime()},

function (json) {

createLis('ListLi2',json);

}

);

break;

}

}

function createLis(obj,json){

switch(obj){

case "ListLi1": //根据车品牌名来刷选List1中的值

var executerDiv = document.getElementById(obj); //动态生成下拉列表框

executerDiv.innerHTML="";

var ul=document.createElement("ul");

$.each(json, function (i, item) {

var li=document.createElement("li");

var str = "getValue('generalBrandName','"+item.brandNameGeneral+"','brandIdGeneral','"+item.brandIdGeneral+"');showAndHide('List1','hide')";

li.setAttribute("onmousedown",str);

li.appendChild(document.createTextNode(item.brandNameGeneral));

ul.appendChild(li);

});

executerDiv.appendChild(ul);

break;

case "ListLi2": //根据车厂商名来刷选List2中的值

var executerDiv = document.getElementById(obj); //动态生成下拉列表框

executerDiv.innerHTML="";

var ul=document.createElement("ul");

$.each(json, function (i, item) {

var li=document.createElement("li");

var str = "getValue('brandName','"+item.brandName+"','brandId','"+item.brandId+"');showAndHide('List1','hide')";

li.setAttribute("onmousedown",str);

li.appendChild(document.createTextNode(item.brandName));

ul.appendChild(li);

});

executerDiv.appendChild(ul);

break;

}

}

//显示或者隐藏层

function showAndHide(obj,types){

var Layer=window.document.getElementById(obj);

switch(types){

case "show":

Layer.style.display="block";

appendList(obj,'');

break;

case "hide":

Layer.style.display="none";

break;

}

}

//获取选中节点的内容

function getValue(obj1,str,obj2,idx){

var input=window.document.getElementById(obj1);

input.value=str;

var input=window.document.getElementById(obj2);

input.value=idx;

}

4.展示效果

35e63e1ad0839c24d0b2888ba941ba42.png

到此,相信大家对“ajax怎么实现输入框文字改变展示下拉列表的效果”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的实现示例: 在 Django 的视图函数中,可以使用 Ajax 技术实现输入框下面弹出相匹配数据的列表。具体步骤如下: 1. 在前端页面中,使用 jQuery 监听输入框的 keyup 事件,获取输入框中的文本内容,并将其发送到后端视图函数中。 ``` $(document).ready(function() { $('#input-box').keyup(function() { var input_text = $(this).val(); $.ajax({ url: '/search/', type: 'POST', data: {'input_text': input_text}, success: function(data) { // 处理返回的数据 } }); }); }); ``` 2. 在后端视图函数中,接收前端发送的数据,并根据输入的文本内容查询数据库中的匹配数据,将查询结果返回给前端。 ``` from django.http import JsonResponse from myapp.models import MyModel def search(request): if request.method == 'POST': input_text = request.POST.get('input_text') results = MyModel.objects.filter(name__contains=input_text) data = [{'id': r.id, 'name': r.name} for r in results] return JsonResponse({'data': data}) ``` 3. 在前端页面中,处理后端返回的数据,将匹配结果显示在列表中。 ``` success: function(data) { var results = data['data']; var list_html = ''; for (var i = 0; i < results.length; i++) { list_html += '<li data-id="' + results[i].id + '">' + results[i].name + '</li>'; } $('#list-box').html(list_html); } ``` 其中,`#input-box` 是输入框的 ID,`#list-box` 是列表的 ID,`MyModel` 是数据库中的模型类,`name` 是模型类中的一个字段。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值