2017-04-10 29 views
0

我有一個輸入焦點事件的偵聽器,但是當輸入該事件時,模態將無限期啓動。Jquery確認無限啓動窗口

$('.input').on('focus',function() { 
 
    $.confirm({ 
 
     theme: 'material', 
 
     title: 'Atention', 
 
     content: '¿Content?', 
 
     useBootstrap: false, 
 
     boxWidth:'200px' 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.2.0/jquery-confirm.min.js"></script> 
 
<input type="date" class="input">

但如果我這樣做的確認窗口不會無限期地顯示

$(this).confirm({...}); 

有什麼用$.confirm VS $(this).confirm的差異,爲什麼出這麼多的窗口次

其中$ symb ol是不是輸入? (這個)是否與輸入相同?

+0

我認爲在這種情況下,您需要將確認事件直接綁定到您的元素,這意味着使用$(this)綁定 –

+0

這不是確認是問題,它是指定的事件處理程序 – Bindrid

回答

0

如果你只需要你的事件發生一次,考慮使用$('.input').one('focus',function(e) { ... }來代替。

jQuery確認庫中的某些內容導致焦點在頁面上的元素間移動,從而多次觸發您的事件。如果您觸發alert,也會發生同樣的情況,因爲焦點已被佔用,然後返回到輸入框。

+0

$符號指的是不是輸入? (這個)是否與輸入相同? – DarkFenix

+0

@DarkFenix這個改變使得你的事件只使用['one' jquery function](http://api.jquery.com/one/)觸發一次,由於通過元素進行了焦點改變,它會阻止它被無限觸發。 – Drewby