2016-10-01 3 views
2

Ich schrieb den untenstehenden Code für die Validierung einer Eingabe von Formular für die Annahme von Handy-Nummern mit der Bedingung der maximalen Nummer 11 und starten mit 0 andernfalls zeigen Sie den Fehler: Bitte geben Sie eine gültige HandynummerWie validiere ich ein Eingabefeld zu Moble Nummer

Ich habe eine Funktion geschrieben, aber es funktioniert nicht richtig. Wenn ich eine Zahl über 11 setze, wird das Formular wahr. Auch wenn ich eine Nummer ohne 0 geschrieben habe, wird sie akzeptiert. hier ist mein Codes:

$('#mobili').focusout(function() { 
 
    $('#mobili').filter(function() { 
 
     var mobi = $('#mobili').val(); 
 
     var mobiback = $('#mobili'); 
 
     var mobilReg = /(\+989|9|09)(12|19|35|36|37|38|39|32)\d{7}/; 
 
     if (!mobilReg.test(mobi)) { 
 
      $('#mobili').css('background-color', '#ff6666'); 
 
      $("#error-nwl").css('color', '#ff6666'); 
 
      $("#error-nwl").text("please enter a valid mobile number"); 
 
     } else { 
 
      $('#mobili').css('background-color', '#66cc66'); 
 
      $("#error-nwl").css('color', '#66cc66'); 
 
      $("#error-nwl").text("ok"); 
 
     } 
 
    }) 
 
});
<html> 
 

 
<head> 
 
    <title>Untitled Document</title> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
 
</head> 
 

 
<body> 
 
    <form id="myform"> 
 
     <input type="tel" name="field1" id="mobili" /> 
 
     <input type="submit" /> 
 
     <div id="error-nwl"></div> 
 
    </form> 
 
</body> 
 

 
</html>

+2

Ich glaube, dass, wenn Sie den Beginn der Zeichenfolge '^' und Ende der Zeichenkette 'plus $' Anker es wollen, wie Sie funktionieren würde. '/^(\ + 989 | 9 | 09) (12 | 19 | 35 | 36 | 37 | 38 | 39 | 32) \ d {7} $ /' –

+0

Sie sagen, dass die Nummer 11 Ziffern lang sein und mit beginnen soll 0, aber Ihre Regex wird eine Gruppe von 10 Ziffern erfassen, beginnend mit einer 0, 11 Ziffern beginnend mit 09 oder 12 Ziffern beginnend mit +989. Gaby's Kommentar ist korrekt über das Hinzufügen der Anker, aber welche Art von Nummer versuchen Sie tatsächlich zu erfassen? – denmch

+0

@denmch ich möchte eine Handynummer eingeben mit 0 beginnen – inaz

Antwort

1

, was ich von Ihrem Problem bekam ist, dass Sie reguläre Ausdrücke zu validieren Feld benötigen, die von 0 beginnend 11-stellige Nummer akzeptieren sollten so regulären Ausdruck verwenden

/^([0][0-9]{10})$/ 

und Sie können auch die maximale Länge im Eingang mit

maxlength="11" 
fixieren

$('#mobili').focusout(function() { 
 
    $('#mobili').filter(function() { 
 
     var mobi = $('#mobili').val(); 
 
     var mobiback = $('#mobili'); 
 
     var mobilReg = /^([0][0-9]{10})$/; 
 
     if (!mobilReg.test(mobi)) { 
 
      $('#mobili').css('background-color', '#ff6666'); 
 
      $("#error-nwl").css('color', '#ff6666'); 
 
      $("#error-nwl").text("please enter a valid mobile number"); 
 
     } else { 
 
      $('#mobili').css('background-color', '#66cc66'); 
 
      $("#error-nwl").css('color', '#66cc66'); 
 
      $("#error-nwl").text("ok"); 
 
     } 
 
    }) 
 
});
<html> 
 

 
<head> 
 
    <title>Untitled Document</title> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
 
</head> 
 

 
<body> 
 
    <form id="myform"> 
 
     <input type="tel" name="field1" id="mobili" maxlength="11" /> 
 
     <input type="submit" /> 
 
     <div id="error-nwl"></div> 
 
    </form> 
 
</body> 
 

 
</html>