2016-06-06 76 views
0

我正在使用JQuery自動完成。它工作正常。但是,如果某人在沒有結果的情況下輸入了客戶名稱,我想顯示引導程序錯誤消息。那也適用BUT 只有第一次。如果您在搜索字段中輸入了第二項也是錯誤的,則if ((data.length == 0) || $.isEmptyObject(data) || (data == null))會呈現TRUE,但不管我是否收到錯誤消息。我甚至嘗試在警報後清空數據對象。我還在整個if語句中放置了console.log()消息,以確保我在流程流程方面沒有出錯。我可以看到if()聲明正在被觸發。但不知何故,警報只適用於第一遍。那麼我做錯了什麼? TKS!如何消除一個對象來滿足我的if語句

$('#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 
    }, 
+0

問題可能是數據丟失。我想當你關閉一個警報時,它會被銷燬。也許只是定期提醒。並且如果你想讓它被允許的話,可以添加一個按鈕,它的點擊事件是將警報的顯示更改爲顯示:無;然後當你想再次顯示它顯示它。也許使用jQuery的.hide和.show –

+0

爲什麼不使用像bootbox(http://bootboxjs.com/)的庫。現在沒有太多理由從頭開始建立警報。 –

+0

相信他是在說bootstrap twitter alert box,而不是javascript alert –

回答

0

這是一個從this Fiddle明確表示,「東西」正在發生的search_customer元件上的警報關閉。注意警報關閉後「測試」消息是如何消失的。

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消失: hey where's my div

這是因爲data-dismiss刪除元素。再見了!

嘗試使用data-hide代替,如下所述:

Twitter Bootstrap alert message close and open again

附:您還缺少class=close附近的報價。


更新:

即使上面的方法,仍然存在與click事件綁定到動態添加元素的問題。您可能會考慮讓您的警報加載到DOM中,但最初隱藏。然後你可以切換它。 Here is a fiddle showing this approach

+0

謝謝你的反饋。我有我的警報現在響應兩個或更多的輸入,但我無法讓警報關閉。我已經嘗試了一切。看看: https://jsfiddle.net/vincej/8sm1vsn8/ – Vince

+0

@Vince - 你錯過了你的小提琴所需的資源。在您的小提琴AJAX調用將永遠不會成功與非公開的網址。話雖如此,我相信你的問題是將點擊事件綁定到動態添加的元素。您可能會考慮讓您的警報加載到DOM中,但最初隱藏。然後你可以切換它。這是一個演示這種方法的小提琴:https://jsfiddle.net/g02bsgah/1/ –

+0

我明白這一切工作!非常感謝 !在您向我調整適合自己的情況之後,我有很多事情要做,但是您的代碼肯定會讓我走上正確的道路。如果您將問題置於正確的位置,我會將其標記爲正確。 – Vince

0

如何對這樣的事情 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">&times;</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(); 
}) 
相關問題