2013-08-31 42 views
1

JS:空間驗證需要優質

var KEYS = { SPACE: 32 }; 
var str = $('#id_phone_daytime').val(); 

$("#id_phone_daytime").keyup(function(e) { 
    $.trim(str) 
    $('#id_phone_daytime').val(str); 
    if (e.keyCode == KEYS.SPACE) { 
     alert("No space please") 
    } 
}); 

HTML:

沒有足夠的空間,請

上面的代碼是針對單個輸入驗證領域的空白。它工作正常,但在我的應用程序中,我有8個不同ID的輸入字段。我想驗證這8個輸入字段的空白驗證。

如何用最少的代碼實現相同的功能?

+1

注意['$ .trim()'](http://api.jquery.com/jQuery.trim/)不改變其參數的值。它取而代之返回修改後的值,需要存儲:'str = $ .trim(str);' –

回答

2

而不是使用id選擇器(它必須是唯一的)使用一個class選擇器,它可以用來分組元素。試試這個:

var KEYS = { SPACE: 32 }; 

$(".no-spaces").keyup(function(e) { 
    var $this = $(this); 
    $this.val($.trim($this.val())); 

    if (e.keyCode == KEYS.SPACE) { 
     alert("No space please"); 
    } 
}); 

所有你現在需要做的就是添加class="no-spaces"到相關投入。

1

可以使用類分配多個選擇,例如

<input type="text" class="validate_white_space"> 

,並使用這個類像下面。

var str = $('.validate_white_space').val(); 

$(".validate_white_space").keyup(function(e) { 
    $.trim(str) 
    $('#id_phone_daytime').val(str); 
    if (e.keyCode == KEYS.SPACE) { 
     alert("No space please"); 
    } 
}); 
+0

在一組元素上獲取'val()'只會給你第一個值。 –

2
var KEYS = { SPACE: 32 }; 
$(".no-spaces").keyup(function(e) { 
    this.value=$.trim(this.value); 
    if (e.keyCode == KEYS.SPACE) { 
     alert("No space please"); 
    } 
});