2016-12-15 3 views
1

Я использую следующие способы предотвращения ввода специальных символов в поля ввода с идентификаторами A, B и C с помощью jQuery и работает как ожидалось. Это происходит на (document) .ready.Как предотвратить повторение в моем javascript funtion?

$("[id$='A']").keypress(function (e) { 
    var regex = new RegExp("^[a-zA-Z0-9]+$"); 
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode); 
    if (regex.test(str) || (/^(8|9|13|27)$/.test("" + e.keyCode))) {      
     return true; 
    }     
    e.preventDefault(); 
    return false; 
});  
$("[id$='B']").keypress(function (e) { 
    var regex = new RegExp("^[a-zA-Z0-9]+$"); 
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode); 
    if (regex.test(str) || (/^(8|9|13|27)$/.test("" + e.keyCode))) {      
     return true; 
    }     
    e.preventDefault(); 
    return false; 
}); 
$("[id$='C']").keypress(function (e) { 
    var regex = new RegExp("^[a-zA-Z0-9]+$"); 
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode); 
    if (regex.test(str) || (/^(8|9|13|27)$/.test("" + e.keyCode))) {      
     return true; 
    }     
    e.preventDefault(); 
    return false; 
} 

Я пытаюсь найти общий метод вместо того, чтобы снова писать функцию. Вот что я пытался ...

function blockSpecialChar(passId){ 
    var tempId = $("[id$ ='passId']"); 
       tempId.keypress(function (e) { 
        var regex = new RegExp("^[a-zA-Z0-9]+$"); 
        var str = String.fromCharCode(!e.charCode ? e.which : e.charCode); 
        if (regex.test(str) || (/^(8|9|13|27)$/.test("" + e.keyCode))) {      
         return true; 
        }     
        e.preventDefault(); 
        return false; 
       }); 

} 

и называя его:

blockSpecialChar(A); 

Позвольте мне знать, где я буду неправильно. Любое предложение было бы здорово.

Заранее благодарен!

+0

Пожалуйста, покажите ваш 'html' – Mairaj

+1

Пожалуйста, просто используйте [ pattern] (https://developer.mozilla.org/en/docs/Web/HTML/Element/input#attr-pattern) и сообщить им, когда это недопустимый ввод с помощью css ': invalid'. Это не мешает мне вставить специальный символ. – Endless

+0

Да, вы правы. – MnZ

ответ

1

Просто сделайте отдельную функцию:

function blockSpecialChar(e) { 
    var regex = new RegExp("^[a-zA-Z0-9]+$"); 
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode); 
    if (regex.test(str) || (/^(8|9|13|27)$/.test("" + e.keyCode))) {      
     return true; 
    }     
    e.preventDefault(); 
    return false; 
} 

$("[id$='A'], [id$='B'], [id$='C']").keypress(blockSpecialChar); 
+0

Спасибо @ this-lau. Это сработало. Мальчик, я был далеко не близко: D – MnZ

1

Вы проходили id элемента, но вы используете его в качестве string

function blockSpecialChar(passId){ 
    var tempId = $("[id$ ='"+passId+"']"); 
    tempId.keypress(function (e) { 
    var regex = new RegExp("^[a-zA-Z0-9]+$"); 
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode); 
    if (regex.test(str) || (/^(8|9|13|27)$/.test("" + e.keyCode))) {      
     return true; 
    }     
    e.preventDefault(); 
    return false; 
    }); 

} 
Смежные вопросы