联系表单“名称”字段验证的麻烦

时间:2018-12-08 07:15:17

标签: jquery

我是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;}
}

我想念的是什么主意吗?这样,如果在名称字段中输入了任何数字,它将不会发送。

2 个答案:

答案 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");
    }
  }
});

这将使函数在调用时位于缓存中。