jquery - 加载到引导模式时,我的搜索输入不起作用
问题描述
我有搜索输入,当用户输入邮政编码时,它会打开一个模式并显示送货地址。
当模式打开时,信息显示正常,但是当用户将邮政编码输入到现在处于模式中的搜索输入中时 - 结果不会刷新。
输入字段是一个实时搜索,它只是用户交互的第一个搜索的副本。
下面是我的 HTML
第一个搜索栏
<div class="col-12 click-collect--container px-0">
<form>
<label for="postcode" class="d-inline-block w-100">Find your nearest pick up point</label>
<div>
<input class="form-control float-left" id="search" name="search" placeholder="Search by postcode" type="text">
<input class="btnpostcode btn btn-primary" data-target="#exampleModalLive" data-toggle="modal" id="Btn_Search" name="BtnPostCode" value="Search >">
</div>
</form>
</div>
这是带有搜索输入的模式的 HTML
<div class="modal" id="exampleModalLive" role="dialog" tabindex="-1">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Click and Collect</h5><button aria-label="Close" class="close" data-dismiss="modal" type="button"><span aria-hidden="true">×</span></button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-6">
<div id="count"></div>
<div class="col-12 click-collect--container px-0">
<form>
<label for="postcode" class="d-inline-block w-100">Find your nearest pick up point</label>
<div>
<input class="form-control float-left" id="search" name="search" placeholder="Search by postcode" type="text">
<input class="btnpostcode btn btn-primary" id="Btn_Search" name="BtnPostCode" value="Search >">
</div>
</form>
</div>
<ul class="list-group mt-3" id="result"></ul>
</div>
<div class="col-6">
<div class="d-inline-block w-100">
<div id="googleMap" style="width:100%;height:300px;"></div>
<ul class="list-group" id="lat-long"></ul>
</div>
<Div class="row">
<div class="col-6">
<ul class="list-group" id="address-container"></ul>
<ul class="list-group" id="opening-times"></ul>
</div>
<div class="col-6">
<div id="del-lists-wrapper"> </div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
这是我的 jQuery
$('#search').blur(function() {
$('#result').html('');
$('#lat-long').html('');
$('#opening-times').html('');
$('#del-lists-wrapper').html('');
var searchField = $('#search').val();
var expression = new RegExp(searchField, "i");
$.getJSON('https://api.myjson.com/bins/m0a3m', function(data) {
//console.log('json')
$.each(data, function(key, value) {
if (value.address.postcode.search(expression) != -1) {
//console.log(value)
//COURIER ADDRESS DETAILS
$('#result').append('<li data-contentid='+ key +' class="list-group-item courier"><div class="c-name font-weight-bold"> ' + value.name + ' </div><div class="address"> ' + value.address.name + ',' + value.address.line1 + ',' + value.address.town + ',' + value.address.county + ',' + value.address.postcode + '</div></li>');
//LAT AND LONG
var mapProp= {
center:new google.maps.LatLng(value.location.latitude,value.location.longitude),
zoom:5,
};
var map=new google.maps.Map(document.getElementById("googleMap"),mapProp);
//OPENING TIMES
$('#opening-times').append('<li id=open-times-'+ key +' class="list-group-item op-times"><div class="c-name font-weight-bold"> Opening Times </div><div class="">Mon ' + value.opening_times.Mon + ' </div><div class="">Tues ' + value.opening_times.Tues + ' </div><div class="">Wed ' + value.opening_times.Wed + ' </div><div class="">Thurs ' + value.opening_times.Thurs + ' </div><div class="">Fri ' + value.opening_times.Fri + ' </div><div class="">Sat ' + value.opening_times.Sat + ' </div><div class="">Sun ' + value.opening_times.Sun + ' </div></li>');
// ARRAY DELIVERY OPTIONS
var ul = $('<ul id=del-add-'+ key +' class="del-options"></ul>');
$.each(value.delivery_options, function(key, val) {
ul.append('<li del-id=' + key + ' class="list-group-item"><div class="c-name font-weight-bold"> ' + val.name + ' </div><div> ' + val.description + ' </div><div class="c-price font-weight-bold"> ' + val.price + ' </div><div class="btn btn-primary btn-block mt-3"><a>Select ></a></div></li>');
});
ul.appendTo('#del-lists-wrapper');
//COURIER ADDRESS FOR OTHER CONTAINER
$('#address-container').append('<li id=cour-add-'+ key +' class="list-group-item alt-address"><div class="c-name font-weight-bold"> ' + value.name + ' </div><div class="d-inline-block w-100"> ' + value.address.name + ' </div><div class="d-inline-block w-100"> ' + value.address.line1 + ' </div><div class="d-inline-block w-100"> ' + value.address.town + '</div><div class="d-inline-block w-100"> ' + value.address.county + ' </div><div class="d-inline-block w-100"> ' + value.address.postcode + '</div></li>');
}
});
});
});
提前感谢您的帮助。
解决方案
这是因为您的侦听器正在寻找名为 search 的 id 的第一个实例。您需要将第二个命名为“modal-search”之类的名称,并将其包含在“search”事件侦听器中。
$('#serach', '#modal-search')
要么做一个 class="search" 然后通过$('.search')
而不是听它$('#search')
推荐阅读
- sql - MSSQL case 语句 - 如果时间是午夜则为假,否则为真
- html - 如何将表单中的字段放置为相同的高度和宽度
- javascript - JavaScript 对象不会发生变异
- angular - 将百分比添加到 ngModel 值 Angular 6(管道)
- dialogflow-es - 是否可以让我的对话流代理在互联网上搜索未解决问题的答案?
- tensorflow - 带有 TensorFlow 的 Keras 不使用 GPU,而是使用 CPU
- angular - 循环浏览资产文件夹中的图像
- android - 使用哪个 Gradle 属性来获取 Gradle 将生成的 APK 存储在哪里?
- mysql - 部署到 Azure 中以破折号命名的 MySql 数据库
- mysql - Laravel 发送邮件 call_user_func() 错误