2012-08-13 2 views
-1

У меня есть форма с полем номера телефона требуется, который выглядит, как это с maskedinput плагинУдалите литералы от входного значения до проверки и представить

(999) 999-9999

Я хочу проверку Jquery к игнорируйте литералы, чтобы подтвердить это. Кроме того, я хочу, чтобы литералы были удалены до отправки формы. Но если есть ошибка проверки, я все равно хочу активировать плагин maskedinput, чтобы формат выглядел корректно для пользователя.

Я полагаю, что могу редактировать регулярное выражение для проверки, но затем, когда форма будет отправлена, литералы все равно будут там.

Сообщите мне об этом лучше.

Любые идеи? Я довольно новичок в jquery, и все такое подробное решение было бы замечательным.

Моего кода Javascript это

$(document).ready(function(){ 


    jQuery.validator.addMethod("phoneUS", function(phone_number, element) { 
    phone_number = phone_number.replace(/\s+/g, ""); 
    return this.optional(element) || phone_number.length > 9 && 
    phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/); 
    }, "US Phone Number Required"); 


    $("#valform").validate({ 
    invalidHandler: function(form, validator) { 
     var errors = validator.numberOfInvalids(); 

     if (errors) { 
      $("#error-message").show().text("Please correct the required field(s)"); 
     } else { 
      $("#error-message").hide(); 
     } 
    }, 
    messages: { 
     phone: { 
      required: "" 
     } 
    }, 
    rules: { 
     phone: { 
      required: true, 
      phoneUS: true 
     }, 

     }, 
    }); 



    $("#phone").mask("(999) 999-9999",{placeholder:" "}); 


    }); 

ответ

1

Вы можете удалить другие символы перед отправкой формы с помощью JS

Этого кода удалит запрещенный символ из ввода, как только его вошли.

Поле ввода имеет класс «числа». Это связывает «KeyUp» событие к этому полю ввода и вызывает функцию под названием «handleInputKeyUp»

$(".numbers").bind("keyup", handleInputKeyUp); 

Функция:

function handleInputKeyUp(e){  

    var temp = e.currentTarget.value; 
       temp = temp.replace(/[^\d-]/g, ""); 
       e.currentTarget.value = temp; 
    } 

Этот код удаляет все, но цифры и - от поля ввода.

+0

Вы можете избежать символа '+'. –

+0

@DavidThomas Нет, если вы хотите ввести номер телефона, его можно использовать – PaperThick

+0

Да, но без экранирования это специальный символ регулярного выражения? Или я что-то упускаю, это все еще немного рано ... –