2014-04-28 19 views
1

大家早上好!如何禁用/刪除輸入字段上的第一個空格?

我有一種情況,當我應該阻止用戶輸入空間作爲輸入字段的第一個字符。

我這裏有一個演示:http://jsbin.com/foyetolo/2/edit

,當你打空格鍵進行第一次才起作用。當你開始輸入其他字符並在輸入中選擇整個文本(ctrl + a),然後點擊空格鍵,它會在輸入字段的開頭添加空格。

因此,如何檢查keypress/keydown是否第一個字符是空格,返回false並且不允許它將空格鍵入爲第一個字符?

+0

修剪前導空格,不需要測試按下的鍵。 – circusdei

+0

[$ .trim()](https://api.jquery.com/jQuery.trim/) – aldanux

+5

一般提示:*永遠不要永遠*阻止某人輸入他們想要輸入的內容。當它們完成時抱怨它(如果你必須的話,'onChange','onSubmit'更好]。 –

回答

8

您可以通過檢查關鍵是spaceselection start如下是0做到這一點:在KEYUP

$(function() { 
    $('body').on('keydown', '#test', function(e) { 
    console.log(this.value); 
    if (e.which === 32 && e.target.selectionStart === 0) { 
     return false; 
    } 
    }); 
}); 

Demo Link

0

嘗試像

$('input').keyup(function() { 
    if($(this).val() == '') { 
    if(event.keyCode == 32) { 
     return false; 
    } 
    } 
} 

這會檢查當前值,然後將運行功能。使用密鑰來檢查密鑰被解除壓縮後的值。如果你使用keydown,它仍然會有價值。在按鍵事件結束後,按鍵可以獲得該值。

或者正如其他人告訴你一直在調整價值。無論用戶是否輸入空格字符,您都可以使用jQuery trim()方法修剪該值。

$('input').keyup(function() { 
    $(this).val($.trim($(this).val())); 
} 

這會添加當前輸入字段值的微調形式。

+0

我忘記提及,在我的情況下,我並不假設使用trim或keyup。 –

1

這個jQuery功能選擇所有的文本輸入時的一個關鍵是未按下,從字符串的開頭刪除所有空白並替代輸入的值:

<script> 
    $(":text").keyup(function() { 
    $(this).val($(this).val().replace(/^\s+/,"")); 
    } 
</script> 

我不建議使用修剪( )當直接用keyup()替換空格時,因爲當你在一個單詞之後鍵入一個空格時,它將在你開始寫下一個單詞之前被刪除。

相關問題