Проверка для 10-значного телефонного номера в Dojo ValidationTextBox

Я работаю с dojo1.7, и здесь я ищу простое регулярное выражение или диапазон / места, которые подтвердят 10-значный номер телефона dijit.form.ValidationTextBox,

Я хотел бы убедиться, что число ровно 10 цифр, без букв, дефисов, паренов или других специальных символов. Кто-нибудь может мне помочь?

3 ответа

Решение

Для точных 10 цифр вы можете использовать RegExp \d{10}, Вот рабочий пример:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Telephone Number Check</title>
    <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.7/dijit/themes/claro/claro.css">
    <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.7/dojo/dojo.js" data-dojo-config="async: true, parseOnLoad: true"></script>
    <script>
        require(["dojo/parser", "dijit/form/ValidationTextBox"]);
    </script>
</head>
<body class="claro">
    <label for="tel">Enter your 10 digits telephone number:</label>
    <input type="text" name="tel" value=""
    data-dojo-type="dijit.form.ValidationTextBox"
    data-dojo-props="regExp:'\\d{10}', required:true, invalidMessage:'Invalid telephone number.'">
</body>
</html>

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

Это переформатирует значение ValidationTextBox как ###-###-####. Просто удалите две линии соединения, если вы не хотите дефисов. Конечно, вы можете реализовать метод filter другими способами, например, используя dojo / number.

declare('calpoly/form/FormattingPhoneNumber', [ValidationTextBox], {

    regExp:"\\d{3}-\\d{3}-\\d{4}",
    invalidMessage:"Please enter a 10-digit phone number",

    filter:function(val){
        val = lang.trim(val);
        var s = [];
        for(var i=0; i<val.length;i++){
            if(!isNaN(val[i])){
                s.push(val[i]);
            }
        }
        if(s.length!=10){
            // Not a 10-digit phone number, return what the user typed, regex will invalidate.
            return val;
        }
        s.splice(3,0,'-');
        s.splice(7,0,'-');
        return s.join('');
    }
});
<input id="reverveAmount" required="true" style="width:50px" data-dojo-type="dijit.form.ValidationTextBox" data-dojo-props='maxLength:"3",constraints:{places:1,min:1,max:20}, regExpGen:function(){ return "\\d+" }, required:true, invalidMessage:"Number only"'>

Это хорошо для меня.

Другие вопросы по тегам