2014-09-25 65 views
1

請幫我解決這個問題。我有很少的輸入,當輸入不重點和輸入的值是空的時,我想用警告顯示彈出窗口。jquery show popover如果輸入的值爲空

這是我所做的。但其行爲不正確。 另請參閱FIDDLE

要重現我的錯誤,請按照下列指示:

  • 關注輸入1,然後unfocuse它。 Popover顯示並且 沒關係。
  • 在輸入#1中鍵入內容,然後不重點。沒有 彈出窗口,也沒關係
  • 在輸入#2中鍵入內容,然後不重點,沒有 popover也沒關係。
  • 再次關注輸入#1,這裏是彈出窗口,即使是輸入的 值也不是空的!

我在哪裏錯了?提前致謝!

$('input').blur(function(){ 
    if(!$(this).val()) { 
     $(this).popover({ 
      title: 'Warning!', 
      content: 'Value can not be empty', 
      placement: 'bottom' 
     }).popover('show'); 
    } else { 
     $(this).popover('hide'); 
    } 
}) 
+0

使用破壞,而不是隱藏 – Kenny 2014-09-25 11:24:41

回答

3

Instand使用popover('hide')你應該使用popover('destroy')的。因爲hide只是隱藏它,但它仍然是一個popover。所以它會出現在Mouseover/Focus上。

$('input').blur(function(){ 
    if(!$(this).val()) { 
     $(this).popover({ 
      title: 'Warning!', 
      content: 'Value can not be empty', 
      placement: 'bottom' 
     }).popover('show'); 
    } else { 
     $(this).popover('destroy'); 
    } 
}) 

嘗試,因爲Fiddle

+0

完美!非常感謝! – user3673623 2014-09-25 11:26:40

1

此外,而不是檢查!$(this).val(),你可以有$(this).val() == ''

$('input').blur(function(){ 
    if($(this).val() == '') { 
     $(this).popover({ 
      title: 'Warning!', 
      content: 'Value can not be empty', 
      placement: 'bottom' 
     }).popover('show'); 
    } else { 
     $(this).popover('destroy'); 
    } 
}) 
+0

我想沒什麼區別「另外,不是檢查!$(this).val(),而是可以有$(this).val()==''」,問題與此無關。 thaks – user3673623 2014-09-25 11:40:07

+0

是的,我知道這個問題不是關於這個if語句。但'!(this).val()'不是推薦的方法。 – 2014-09-25 11:44:16

+0

你能解釋爲什麼嗎? – user3673623 2014-09-25 13:00:03

相關問題