2013-02-10 45 views
-1
$(document).ready(function() 
{ 
    $('#searchInput').keypress(function() 
    { 
     if($(this).val() == '') 
     { 
     $('#button').attr('disabled', true); 
     } 
     else 
     { 
     $('#button').removeAttr('disabled'); 
     } 

    }); 
}); 

,我加入旁按鈕,ID爲「已禁用」 現在我有一個問題。當我按下空格鍵,然後點擊搜索按鈕,沒問題,一切都是fine.But之後,我按下空格鍵和按退格鍵,我點擊搜索按鈕,它顯示結果。我無法解決問題。我想預防空間初始。間距在搜索框中

+0

你的問題混淆了。在下面的評論中,你要求的是在你最初的問題中沒有描述的東西。請提供一個正確的描述,你正在努力實現什麼,爲什麼你未能實現它 – Alexander 2013-02-10 13:33:30

+0

親愛的亞歷山大我不想在我的搜索框中的空間。我想預防空白results.UP代碼工作,但有點老鼠 - 點擊。它不工作與鍵盤輸入 – user1880910 2013-02-10 13:44:17

回答

1

空間不是空你應該嘗試 $ .trim()功能, 修剪將刪除所有的空格,並只給字符串沒有任何尾隨空格

$('#searchInput').keypress(function() 
{ 
    if ($.trim($(this).val()) == '') 
    { 
    $('#button').attr('disabled', true); 
    } 
    else 
    { 
    $('#button').removeAttr('disabled'); 
    } 
}); 
+0

它的工作,但是當我的鍵盤按下回車鍵,再次顯示結果 – user1880910 2013-02-10 13:16:41

+0

代替按鍵事件的增加keyup事件 – Maddy 2013-02-10 13:18:02

+0

這是完全不相干的問題,哪怕是一個好主意。 – lonesomeday 2013-02-10 13:18:36

0

奇怪的是,你對一些跑起來奇怪的瀏覽器行爲在IE和Webkit瀏覽器中,退格不會觸發keypress事件,因此該處理程序從不執行。

但是,在Firefox中,該功能在之前運行,該元素的value被更改。所以當你輸入的空間,該函數運行並且value仍然是空的。因此該按鈕被禁用。然後您按退格鍵,並且該功能與value一起運行,它仍然是一個字符的字符串,並帶有空格。所以按鈕被啓用。

您需要使用keyup代替,因爲這是在所有瀏覽器中運行時按下退格,它是運行value改變。

$(document).ready(function() { 
    $('#searchInput').keyup(function() { 
     if (this.value == '') { 
      $('#button').prop('disabled', true); 
     } else { 
      $('#button').prop('disabled', false); 
     } 
    }).keyup(); 
}); 

Working example

變化我已經作出:

  • 改變keypresskeyup
  • this.value而不是$(this).val():更快
  • prop('disabled', true)而不是attr('disabled', true):這是正確的功能使用和避免IDS做奇removeAttr
  • 添加keyup()到最後,所以功能也運行在頁面第一次加載
+0

我不介意downvotes,但我很困惑在這一個... – lonesomeday 2013-02-10 13:20:15

+0

我乞求不同意你描述的按鍵''的行爲。總之,沒有任何事情,當你按退格 – Alexander 2013-02-10 13:20:20

+0

我不想空間初始 – user1880910 2013-02-10 13:20:44

0

只是有點微細化以及使用$.trim防止enabling由空格:

$('#searchInput').keyup(function() { 
     $('#button').prop('disabled', !$.trim(this.value)); 
}).keyup(); 

Demo