我是PHP的新手,一直在拼凑自己的联系表格...
在下面的方案2中,我无法使表单失效。代码也在下面。
场景1::输入2个字母或数字=弹出错误,并且邮件不发送。
场景2:输入了3个以上的数字=弹出错误,但邮件确实发送。
$(document).ready(function(){
$("#contact_email").focus(function(){
if($("#contact_name").val().length < 3){
$("#contact_name").css("border", "solid 1px #D295B5");
}else {
if(allLetter($("#contact_name").val())){
$("#contact_name").css("border", "solid 1px #D295B5");
}else {
$("#contact_name").css("border", "solid 1px #DADB93");
}
}
});
function allLetter(inputtxt){
var letters = /^[A-Z a-z]+$/;
if(inputtxt.match(letters)){return false;}
else{return true;}
}
我想念的是什么主意吗?这样,如果在名称字段中输入了任何数字,它将不会发送。
答案 0 :(得分:0)
当前,当您关注输入(.focus()
)时正在运行测试,但是您可能希望它们在表单的.submit()
上运行。
然后您想在更改边框样式后return false
,以防止表单提交。
所以:
$("#contact_email").closest('form').submit(function(){
// Your tests...
return false;
});
答案 1 :(得分:0)
这听起来很愚蠢,但是我发现有时您放置函数的顺序会影响脚本的逻辑输出。因此,请尝试将function allLetter(inputtxt)
代码放在$(document).ready(function()
上方
function allLetter(inputtxt){
var letters = /^[A-Z a-z]+$/;
if(inputtxt.match(letters)){return false;}
else{return true;}
}
$(document).ready(function(){
$("#contact_email").focus(function(){
if($("#contact_name").val().length < 3){
$("#contact_name").css("border", "solid 1px #D295B5");
}else {
if(allLetter($("#contact_name").val())){
$("#contact_name").css("border", "solid 1px #D295B5");
}else {
$("#contact_name").css("border", "solid 1px #DADB93");
}
}
});
这将使函数在调用时位于缓存中。