2014-02-22 2 views
1

내가 찾고있는 것들과 가까운 게시물을 많이 보았지만 여전히 오류가 발생하고 일부 정규식 도움말이 필요했습니다. 영숫자, 공백 및 대시를 허용해야하는 양식 필드가 있습니다. 이상적으로 공백과 대시는 연속적이지 않습니다.regex : 키패드의 영숫자 공백 및 대시

사용자가 이러한 금지 된 문자를 입력 할 수 없도록 키패드에서 실행하고 싶습니다.

여기는 내가 지금까지 가지고있는 것이지만, 나는 잘못된 오류를 던지고 있으며이 코드는 파이어 폭스에서 작동하지 않는다. 당신의 도움을 주셔서 감사합니다!

$('#your_name').keypress(function (e) { 
    var allowedChars = new RegExp("^[a-zA-Z0-9\-\ ]+$"); 
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode); 
    if (allowedChars.test(str)) { 
     return true; 
    } 
    e.preventDefault(); 
    return false; 
}).keyup(function() { 
    var forbiddenChars = new RegExp("[^a-zA-Z0-9\-\ ]", 'g'); 
    if (forbiddenChars.test($(this).val())) { 
     $(this).val($(this).val().replace(forbiddenChars, '')); 
    } 
}); 

답변

1

이 시도 :

$('#your_name').keyup(function (e) { 
    var allowedChars = /^[a-z\d -]+$/i; 
    var str = String.fromCharCode(e.charCode || e.which); 

    var forbiddenChars = /[^a-z\d -]/gi; 
    if (forbiddenChars.test(this.value)) { 
     this.value = this.value.replace(forbiddenChars, ''); 
    } 

    if (allowedChars.test(str)) { 
     return true; 
    } 

    e.preventDefault(); 
    return false; 
});