javascript - 在使用 POST 发送之前使用 Javascript 验证表单输入
问题描述
我正在尝试使用 javascript 验证表单中的一些输入,然后再将其通过 POST 发送到 PHP 控制器。
JS 代码如下所示,验证手机号、邮箱和密码:
function registerUser(){
// Validate Email
event.preventDefault();
function validateEmail(email) {
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
function validate()
{
var email = document.getElementById("emailReg").val();
if (validateEmail(email))
{
var celular = document.getElementById("cellReg").val();
if(celular.lenght >= 10 && /[0-9]/.test(celular))
{
var pass = document.getElementById("passwordReg").val();
if(pass.length >= 6 && /[a-zA-Z]/.test(pass))
{
alert("correct data");
document.forms['registerForm'].submit();
}
else
{
// document.forms['registroForm'].submit();
event.preventDefault();
alert("password need to has at leas 6 characters and one uppercase");
}
}
else
{
event.preventDefault();
alert("Phone number must not have letters");
}
}
else
{
event.preventDefault();
alert("Incorrect e-mail");
}
return false;
}
}
这是表格:
<form class="form row" method="POST" name="registerForm">
<input type="email" class="form-reg" name="emailReg" id="emailReg" placeholder="example@email.com" style="width:140px;" required>
<input type="text" class="formulario-registro" name="cellReg" id="cellReg" placeholder="cellphone number" style="width: 130px;" required>
<input type="password" class="formulario-registro" name="passwordRegistro" id="passwordRegistro" placeholder="contraseña" style="width: 140px;" required>
<button type="button" class="btn btn-round btn-qubit title" onclick="registroUser();">Registrarme</button>
</form>
我必须检查长度,如果密码至少有一个大写字母,手机号码是否只有数字和至少 10 个字符,如果我在输入标签中写入type="number"属性,它将显示为 up和我不想显示的向下箭头,我可以将条件放在我的 php 中,但这样,当我提交表单时,表单将被删除,这就是我不想做的事情。
解决方案
我在提交表单时应用函数......当它提交下面的 JS 代码时,验证条件是否为真,然后将其发送到 php 控制器。
$(document).ready(function(){
$(".registerForm").on('submit', function(event)
{
var validate = validate();
if(validate === "success")
{
console.log("success");
document.forms['registerForm'].submit();
}
else{
event.preventDefault();
}
});
// validate password //
function validate()
{
var email = $("#emailRegister").val();
if (validateEmail(email))
{
var cell = $("#cellRegister").val();
if(cell.length === 10)
{
var pass = $("#passwordRegister").val();
if(pass.length >= 6 && /[A-Z]/.test(pass))
{
console.log("correct data");
return "success";
}
else
{
alert("password must have a lenght of 6 digits and at least one capital letter");
return "false";
}
}
else
{
alert("cellphone must be minimum a 10 digits number");
return "false";
}
}
else
{
alert("incorrect e/mail adress");
return "false";
}
}
// Validate Email
function validateEmail(email) {
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
});
推荐阅读
- mysql - 当我使用续集的文字时,没有结果
- python - pygame.error: 视频系统未初始化并且 pygame.get_init() 返回 None
- c# - 如何从集合中的属性中获取 nameof()?
- python - Python数据框格式化字符串
- bitmap - 如何从camerax获取位图?
- android - 在 Android 中使用 Hilt 后无法创建视图模型实例
- arrays - Laravel collect($array)->sortBy($value)->values() 显示在屏幕上
- python - 数据框中的向量化字符串搜索
- r - 改进 R 中的现有循环和延迟
- java - 用坐标、长度、宽度和角度计算矩形的中心