電話番号検証スクリプトが複数のサイトで実行されていましたが、突然壊れました。正しく機能するには、正確に10文字が必要で、数字以外のすべての文字(を含むx,#,*,(,-
)を取り除き、市外局番を使用して電話番号を検証します(スペースのために以下のスニペットでは5文字のみ)。ただし、現在、電話フィールドではすべての文字と任意の数の文字が許可されています。ここで何が間違っているのかを見つけようとしているだけです。
検証スクリプト
jQuery.validator.addMethod("phone", function(value, element) {
if(value.length > 10)
{
if(value.charAt(0) == 1) {
value = value.substr(1)
}
var value = value.replace(/\D/ig,'');
$(element).val(value)
}
var list = [201,202,203,204,205];
var area = value.substring(0, 3);
if(list.indexOf(parseInt(area)) == -1)
{
return false;
}
return value.length == 10
}, "Invalid Phone");
jQuery('#form form').validate({
rules: {
Email: {
required: true,
email: true
},
First_Name: {
required: true,
alpha: true
},
Last_Name: {
required: true,
alpha: true
},
Primary_Phone: {
phone: true
},
City: {
alpha: true
}
},
messages: {
required: "Required"
}
});
電話フィールド
<input name="Primary_Phone" type="tel" class="phone form-control" placeholder="5555555555" required="">
与えられたスクリプトでは、ユーザーが10文字を超えて入力すると、数字以外のすべての文字が削除されます。ユーザーが入力した文字数に関係なく、数字以外のすべての文字を削除したいと思いますか?
jQuery.validator.addMethod("phone", function(value, element) {
var value = value.replace(/\D/ig,'');
$(element).val(value)
if(value.length > 10)
{
if(value.charAt(0) == 1) {
value = value.substr(1)
}
}
var list = [201,202,203,204,205];
var area = value.substring(0, 3);
if(list.indexOf(parseInt(area)) == -1)
{
return false;
}
console.log(value);
return value.length == 10
}, "Invalid Phone");
jQuery('form').validate({
rules: {
Primary_Phone: {
phone: true
},
},
messages: {
required: "Required"
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.min.js"></script>
<form>
<input name="Primary_Phone" type="tel" class="phone form-control" placeholder="5555555555" required="">
</form>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加