想要在输入文本中使用+91 pefix,该文本可以保持不变,并且在输入数据后第3个和第6个数字后要有空格或连字符...可以吗?这是我的代码,请帮助!!先感谢您

   function ValidateMobNumber(txtMobId) {
      var fld = document.getElementById(txtMobId);

      if (fld.value == "") {
      alert("You didn't enter a phone number.");
      fld.value = "";
      fld.focus();
      return false;
     }
      else if (isNaN(fld.value)) {
      alert("The phone number contains illegal characters.");
      fld.value = "";
      fld.focus();
      return false;
     }
     else if (!(fld.value.length == 10)) {
      alert("The phone number is the wrong length. \nPlease enter 10 digit mobile no.");
      fld.value = "";
      fld.focus();
      return false;
     }

    }

    </script>
    </head>
    <body>
    <input type="text" id="txtMB" />
    <!--Or Call on Button-->

    <input type="submit" id="btnVal" value="Save" onclick="return ValidateMobNumber('txtMB')" />

最佳答案

您要查找的正则表达式为:

^\+91 ?\d{3}([ -]{1})?\d{3}([ -]{1})?\d{3}$
/* valid are:
    +91 123 456-789
    +91123456789
    +91 123-456-789
    etc.

    the regex means: +91, optional space, 3 numbers, optional one space or hyphen, the same once again and three numbers at the end.
*/


当您想在JavaScript中测试regexp时,您需要使用方法.test,请参见下面的代码。

<form onsubmit="return ValidateMobNumber('txtMB');">
    <input type="text" id="txtMB">
    <input type="submit" id="btnVal" value="Save">
<form>

<script>
    function ValidateMobNumber(txtMobId) {
        var fld = document.getElementById(txtMobId);
        var patt = /\+91 ?\d{3}([ -]{1})?\d{3}([ -]{1})?\d{3}$/;
        var res = patt.test(fld.value);

        alert(res); // just for testing to show you if phone number is valid or not, remove that
        return res;
    }
</script>


http://jsfiddle.net/yv4dyoLg/

确认您在验证功能中不需要3个条件,上面的代码已完成,错误消息可能是“您插入了无效的电话号码”。

我将返回值移到公式的onsubmit操作中,因为可以使用Enter将其发送。当您按Enter键时,onclick不会在submit input上激活。

关于javascript - 在3位数和6位数之后插入空格或连字符,且前缀为+91,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27775222/

10-13 05:56