【发布时间】:2023-04-08 22:44:01
【问题描述】:
我正在尝试在 Javascript/Jquery 将对表单执行客户端验证的网页上创建一个表单。我需要它不仅检查必填字段是否已填写,而且是否填写正确(即电话号码的格式为 000-000-0000,电子邮件末尾有一个 @example.com 并输入了两个名称名称字段)。我一直在尝试在线查找示例代码,但我发现的代码大多破坏了我已有的代码。这是表单的 one 字段的代码:
HTML:
<div class="contactForm">
<label for="phone">Phone: </label>
<div id="errorphone" class="error"></div>
<input type="phone" name="phone" id="phone" placeholder="000-000-0000" required>
</div>
Javascript:
$("document").ready(function(){
console.log("Loaded");
$("#submit").click(function(){
checkPhone();
});
$("#phone").change(function(){
console.log("Something in phone changed");
checkPhone();
});
function checkPhone(inputtxt){
var phoneno = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
if($.trim($("#phone").val())==""){
$("#errorphone").html("<p>You missed your phone number</p>");
$("#errorphone").addClass("showerror");
}
else if((inputtxt.value.match(phoneno)==false){
$("errorphone").html("<p>Please enter your number in the format 000-000-0000</p>");
$("#errorphone").addClass("showerror");
}
else{
$("#errorphone").html("");
$("#errorphone").removeClass("showerror");
}
}
Javascript使用来检查字段是否为空,但是当我尝试添加代码以验证格式是否正确时,all Javascript停止工作。这是我在尝试添加格式验证之前的原始 checkPhone 功能:
function checkName(){
if($.trim($("#name").val())==""){
$("#errorname").html("<p>You missed your name</p>");
$("#errorname").addClass("showerror");
}
else{
$("#errorname").html("");
$("#errorname").removeClass("showerror");
}
}
我正在使用 Sublime,并且当前 Javascript 中的 else 语句没有正确着色,所以我假设问题可能与语法有关,因为 else 语句似乎不再被识别。但坦率地说,我什至不确定我是否要正确地格式化验证,而且我确信有一种更简单的方法可以完全进行表单验证。我还注意到当前版本的 checkPhone 有 inputtxt 作为条件,但该字段的输入类型被列为电话。也许这就是问题所在?
无论哪种方式,对我正在使用的方法以及如何进行的任何帮助都会很棒。
【问题讨论】:
-
你的 HTML 没有
<form>,这是一个糟糕的开始...... -
我的整个表单都用
<form>包装,我只包含了引用表单的一部分的代码,以防止复制/粘贴大量代码。 -
我强烈推荐jquery验证插件jqueryvalidation.org
-
“所有的 JavaScript 都停止工作”的代码是什么?控制台上打印了哪些错误?
标签: javascript jquery html forms validation