如何消除一个对象以满足我的 if 语句
How to eliminate an object to satisfy my if statement
我正在使用 JQuery 自动完成功能。它工作正常。但是,如果有人在没有结果的情况下输入客户名称,我想显示一条 Bootstrap 错误消息。这也有效,但 只有第一次。如果您在搜索字段中再次输入也是错误的,那么 if ((data.length == 0) || $.isEmptyObject(data) || (data == null) )
会呈现 TRUE
但无论如何我都不会收到错误消息。我什至尝试在警报后清空数据对象。我还在整个 if 语句中放置了 console.log()
消息,以确保我没有在流程方面犯错误。我可以看到正在触发 if()
语句。但不知何故,警报只在第一次通过时有效。那我做错了什么? TKS!
$('#customer').autocomplete({
minLength:3,
source: function(request, response,term) {
var param = request.term;
$.ajax({
url: "quotes/customer_search/"+param,
dataType: "json",
type:"GET",
success: function (data) { console.log('l 132',data);
if ((data.length == 0) || $.isEmptyObject(data) || (data == null) ) console.log('l 133', data)
{ $("#search_customer").addClass("alert alert-warning fade in").append('No Such Person Found',"<a href='#' class=close data-dismiss='alert' aria-label='close' title='close'>×</a>" ); /* .hide(5000); */
delete data ; console.log('l 135', data);
}
response($.map(data, function(item, index) { console.log('l 139', data);
return item.id+" "+item.firstname1+" "+item.lastname1+" "+item.telephone1;
}
));//END Success
},
});//END AJAX
},
这样的怎么样
https://jsfiddle.net/q5kb0xzk/
<div class="alert alert-warning " id="myalert" style="display: none;" role="alert">
<button type="button" class="close" aria-label="Close" id="close"><span aria-hidden="true">×</span></button>
<strong>Warning!</strong> Better check yourself, you're not looking too good.
</div>
$('#btn').click(function(){
if(!$('#inputEmail3').val().length ){
$('#myalert').show();
}else{
$('#myalert').hide();
}
})
$('#close').click(function(event){
$('#myalert').hide();
})
从 this Fiddle 可以清楚地看出,"something" 在警报关闭时发生在 search_customer 元素上。请注意关闭警报后 "test" 消息是如何消失的。
JQuery:
$('#test').click(function() {
$("#search_customer").addClass("alert alert-warning").append('No Such Person Found', "<a href='#' class=close data-dismiss='alert' aria-label='close' title='close'>×</a>");
});
HTML:
<div id="search_customer">
test
</div>
<input id="test" type="button" value="Click Me!">
因此,关闭警报后检查 HTML,您会发现 div 消失了:
这是因为 data-dismiss
删除了元素。再见div!
尝试使用 data-hide
,如下所述:
Twitter Bootstrap alert message close and open again
P.S。您还缺少 class=close
.
周围的引号
更新:
即使采用上述方法,将点击事件绑定到动态添加的元素仍然存在问题。您可能会考虑将警报加载到 DOM 中,但最初是隐藏的。然后你可以切换它。 Here is a fiddle showing this approach.
我正在使用 JQuery 自动完成功能。它工作正常。但是,如果有人在没有结果的情况下输入客户名称,我想显示一条 Bootstrap 错误消息。这也有效,但 只有第一次。如果您在搜索字段中再次输入也是错误的,那么 if ((data.length == 0) || $.isEmptyObject(data) || (data == null) )
会呈现 TRUE
但无论如何我都不会收到错误消息。我什至尝试在警报后清空数据对象。我还在整个 if 语句中放置了 console.log()
消息,以确保我没有在流程方面犯错误。我可以看到正在触发 if()
语句。但不知何故,警报只在第一次通过时有效。那我做错了什么? TKS!
$('#customer').autocomplete({
minLength:3,
source: function(request, response,term) {
var param = request.term;
$.ajax({
url: "quotes/customer_search/"+param,
dataType: "json",
type:"GET",
success: function (data) { console.log('l 132',data);
if ((data.length == 0) || $.isEmptyObject(data) || (data == null) ) console.log('l 133', data)
{ $("#search_customer").addClass("alert alert-warning fade in").append('No Such Person Found',"<a href='#' class=close data-dismiss='alert' aria-label='close' title='close'>×</a>" ); /* .hide(5000); */
delete data ; console.log('l 135', data);
}
response($.map(data, function(item, index) { console.log('l 139', data);
return item.id+" "+item.firstname1+" "+item.lastname1+" "+item.telephone1;
}
));//END Success
},
});//END AJAX
},
这样的怎么样 https://jsfiddle.net/q5kb0xzk/
<div class="alert alert-warning " id="myalert" style="display: none;" role="alert">
<button type="button" class="close" aria-label="Close" id="close"><span aria-hidden="true">×</span></button>
<strong>Warning!</strong> Better check yourself, you're not looking too good.
</div>
$('#btn').click(function(){
if(!$('#inputEmail3').val().length ){
$('#myalert').show();
}else{
$('#myalert').hide();
}
})
$('#close').click(function(event){
$('#myalert').hide();
})
从 this Fiddle 可以清楚地看出,"something" 在警报关闭时发生在 search_customer 元素上。请注意关闭警报后 "test" 消息是如何消失的。
JQuery:
$('#test').click(function() {
$("#search_customer").addClass("alert alert-warning").append('No Such Person Found', "<a href='#' class=close data-dismiss='alert' aria-label='close' title='close'>×</a>");
});
HTML:
<div id="search_customer">
test
</div>
<input id="test" type="button" value="Click Me!">
因此,关闭警报后检查 HTML,您会发现 div 消失了:
这是因为 data-dismiss
删除了元素。再见div!
尝试使用 data-hide
,如下所述:
Twitter Bootstrap alert message close and open again
P.S。您还缺少 class=close
.
更新:
即使采用上述方法,将点击事件绑定到动态添加的元素仍然存在问题。您可能会考虑将警报加载到 DOM 中,但最初是隐藏的。然后你可以切换它。 Here is a fiddle showing this approach.