【发布时间】:2022-02-04 02:40:28
【问题描述】:
我正在开发一个 HTML 网站,但我遇到了一种情况。
客户只想添加电话号码,不添加字母字符,条件是如果有人在 10 位电话号码前输入 +91(即 +917894561236),则应接受电话号码字段并提交电话号码,如果他没有添加 +91,该字段也应该接受 10 位电话号码,但不少于 10 个号码。
这是我的html:
<div class="form-group">
<label for="">Phone number *</label>
<input type="text" class="form-control" minlength=10 required name="phone_m" id="phoned"
placeholder="Enter Your Phone Number" pattern="^(\+91[\-\s]?)?[0]?(91)?[6789]\d{9}$"
oninput="if (typeof this.reportValidity === 'function') {this.reportValidity();}" / >
</div>
下面的 jQuery 脚本用于从电话字段中删除字母,但是在输入字段中添加 type="tel" 并不会阻止用户输入字母
<script>
//to get only numeric values in phone number field
jQuery('#phoned').keyup(function () {
this.value = this.value.replace(/[^0-9+\.-]/g, '');
});
</script>
【问题讨论】:
-
您的输入应该是
type='tel',您可以添加一个pattern属性,该属性采用正则表达式来满足您的要求。如果您这样做,您可以删除maxlength,并且您的占位符应该与您的预期模式相匹配,以免混淆用户。 -
使用正则表达式获得您想要的结果。删除
maxlength,因为您不能接受+91或将manlength用作13(手机号码为10 位,+91 为3 位/字符)。您可以将minlength用作 10,因为您需要 10 位数的手机号码。对于匹配的手机号码,您可以使用[6-9]{1}[0-9]{9},其中号码从 6 或 7 或 8 或 9 开始,其余 9 位数字可以是任何数字。对于匹配 +91 你可以做类似的事情 -
@Cre 你不能在整个页面上散布代码要求。如果您提供一些应该和不应该被允许的示例字符串,您的问题会更清楚。您收到了投票,因为没有证据表明您已经研究并尝试自我解决。我们并不是要“为您工作”,我们在这里帮助您解决失败的尝试。 “帮助吸血鬼”很糟糕。
-
@Don 请避免编辑已关闭的问题,除非编辑使问题成为重新打开的良好候选者。我之所以这么说是因为您的编辑已将此问题置于重新打开队列中,但 OP 需要提供更多清晰/详细信息。
-
我明白了,对此感到抱歉。它出现在建议的编辑审查队列中。我批准了编辑,但我自己改进了它。将注意避免编辑封闭的问题,感谢您指出这一点。
标签: javascript php html jquery