【问题标题】:Validate a not required input验证不需要的输入
【发布时间】:2018-01-31 17:10:46
【问题描述】:

是否可以验证电话号码,但如果留空则不需要验证电话号码?

  • 如果输入是 - 表单应该提交
  • 如果输入了电话号码,则它要求它是 10 位数字
  • 如果它与 10 位数字模式不匹配 - 那么表单应该不提交

请指教,谢谢

【问题讨论】:

  • 简而言之:如何验证非必需输入
  • 是的,这是可能的。您是否有一些无法按您希望的那样工作的验证码?如果是这样,请显示它,以便我们修复它。否则你的问题有点抽象。
  • P.S.我从您的问题历史记录中注意到,您从未接受过您之前问题的任何答案。如果您想继续从社区获得帮助,您应该通过接受对您有用的答案来承认您已经获得的帮助。获得 15 点声望点后,您也可以根据需要投票。这为提问者提供了声誉积分,也让未来的读者清楚地知道最佳答案是什么。见stackoverflow.com/help/someone-answers
  • 对不起,我不知道。我想验证非必需的输入。 Roko C 是对的。
  • 只需从该代码中删除“必需”属性

标签: javascript jquery html forms


【解决方案1】:

如果你使用required 属性,你就游戏结束了。所以不要。

要求是 10 位数字

使用^\d{10}$ 模式:

input[type=text]:invalid{
  border: 1px solid red;
}
<form>
  <input type="text" pattern="^\d{10}$" />
  <button>SUBMIT</button>
</form>

表单不提交如果

  1. 有一些值并且该值与pattern 中的正则表达式不匹配。

表单提交如果

  1. 没有价值
  2. AND 的值正好是 10 位

【讨论】:

  • 这将显示红色边框,但即使我输入两个数字,我仍然可以提交。我是否必须添加必需的属性,以便他们无法提交表单
  • @LiWen 你做错了什么。再看我的例子。看?我无法提交表单。
  • rsp-toyotaofnatchez.fzautomotive.com/…Roko 嗨,Roko 我试过的最优惠的价格表格如果您将电话字段留空,则删除了必填属性我无法提交表格
  • @LiWen 在那个按钮上有一个运行的“validateForm”函数,以及 HTML5 属性。我猜那是在添加一些额外的规则。
【解决方案2】:

您可以使用正则表达式匹配大多数电话号码或空字符串。

var pat = /^$|^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$/
console.log(pat.test(''))
console.log(pat.test('8169428451'))
console.log(pat.test('(816)842-8455'))
console.log(pat.test('asdfs'))

function check(){
var pat = /^$|^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$/
var phone = document.getElementById('phone')
if(pat.test(phone.value))
{
document.getElementById("myForm").submit();
}
else
{
return false
}
}
<form id="myForm">
  <input id="phone" type="text" />
  <button onclick="check(); return false;">Go</button>
</form>

【讨论】:

  • 嗨,Scath 感谢您的帮助,但我将您的模式应用到了我所需的模式文件中。然后我测试我的表单如果我不输入电话我无法提交表单
  • 是必填项吗?
  • 这个就是我所拥有的,这段代码不会传递空输入,但如果我更改 type="tel" 它会传递空但也传递任何数字。
  • 尝试去掉模式字符串开头和结尾的“/”。
猜你喜欢
  • 2015-05-23
  • 1970-01-01
  • 1970-01-01
  • 2015-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-08
相关资源
最近更新 更多