2015-04-23 33 views
2

我想确保用户只输入一个名字(名字,或姓氏,但不是两个或没有),同时确保输入的名称长于3个字符。如何确保用户只输入一个名字?

我试过这样做,但是在将它留空并使其变为2个字符之间存在冲突。

这是我的代码:

if ($("#firstName").val().length > 0 && $("#lastName").val().length > 0) { 
    event.preventDefault(); 
    $("#error").slideDown().text("You may enter just first name or last name"); 
    return; 
} else if ($("#firstName").val().length <= 2 || $("#lastName").val().length <= 2) { 
    event.preventDefault(); 
    $("#error").slideDown().text("Your name have to contain at least 3 letters"); 
    return; 
} 

小提琴可以发现here

+0

名字只能是两个字符,姓氏也是一样。 –

回答

1

检查空间中存在的名称。如果存在,则用户输入全名

试试这个:

var name = $.trim($('#firstName').val()); 
if (name.length < 3 && name.indexOf(' ') > -1) { 
    alert("Invalid Name; Enter first name or last name only"); 
} 
0
if ($("#firstName").val().length > 0 && $("#lastName").val().length > 0) { 
    event.preventDefault(); 
    $("#error").slideDown().text("You may enter just first name or last name"); 
    return; 
} else if ($("#firstName").val().length <= 2 || $("#lastName").val().length <= 2) { 
    event.preventDefault(); 
    $("#error").slideDown().text("Your name have to contain at least 3 letters"); 
    return; 
} 

你检查这两个字段中输入的。然后你检查两个字段是否为< = 2。 即使只输入了一个名称,而另一个名称为空,后者也是如此。 您应该检查这样

if ($("#firstName").val().length > 0 && $("#lastName").val().length > 0) { 
    event.preventDefault(); 
    $("#error").slideDown().text("You may enter just first name or last name"); 
    return; 
} else if (!($("#firstName").val().length > 2 || $("#lastName").val().length > 2)) { 
    event.preventDefault(); 
    $("#error").slideDown().text("Your name have to contain at least 3 letters"); 
    return; 
} 
+0

谢谢。有效。 –

+0

Karthiks版本实际上应该更好,因为它更好地区分案例 – user3154108

+0

谢谢。我会很高兴,如果你能告诉我为什么如果我输入数字我的“名字”例如我得到错误(因为我做“isNumeric”),但如果我把数字字母(例如“asdahsd123123”),它通过。谢谢 –

0

请参阅本fiddle 我希望这是你在寻找什么,

$("form").submit(function (event) { 


    // TODO 1: Make sure age has only digits 

    // TODO 2: Make sure names do not have digits 

    // TODO 3: Make the email is valid (has @ and . inside of them - do not use RegEx, use indexOf) 

    // TODO 4: Make sure each name is longer than 2 chars if the input is not empty 
    if (!$("#firstName").val() && !$("#lastName").val()) { 
     event.preventDefault(); 
     $("#error").slideDown().text("You may enter first name or last name"); 
     return; 
    }else if ($.isNumeric($('#firstName').val()) || $.isNumeric($('#lastName').val())) { 
     event.preventDefault(); 
     $("#error").slideDown().text("Your name can contain letters only"); 
     return; 
    }else if (!($("#firstName").val().length > 2 || $("#lastName").val().length > 2)) { 
    event.preventDefault(); 
    $("#error").slideDown().text("Your name have to contain at least 3 letters"); 
    return; 
} 

    if ($("#email").val().indexOf("@") < 0 || $("#email").val().lastIndexOf(".") < 0) { 
     event.preventDefault(); 
     $("#error").slideDown(); 
     $("#error").text("Your Email is not valid."); 
     return; 
    } 
    if ($("#age").val() == "" || $("#age").val() < 18) { 
     event.preventDefault(); 
     $("#error").slideDown().text("You must be over 18 to register"); 
     return; 
    } 


    if (!$.isNumeric($('#age').val())) { 


     event.preventDefault(); 
     $("#error").slideDown().text("Your age can contain numbers only"); 
     return; 
    } 




    if (!$("#terms").is(":checked")) { 
     event.preventDefault(); 
     $("#error").slideDown().text("Please accept terms"); 
     return; 
    }  


    $("#error").slideDown().text("we can now submit the form"); 




     // TODO 5: Make sure the user inputed excacly one name (first name, or last name, but not both or non) 
    }); 
1

嗨你应该改变你的病情点点。它有点冗长,但达到了目的。

if ($("#firstName").val().length > 0 && $("#lastName").val().length > 0) { 
    event.preventDefault(); 
    $("#error").slideDown().text("You may enter just first name or last name"); 
    return; 
} 

if($("#firstName").val().length > 0){ 
    if ($("#firstName").val().length <= 2){ 
    event.preventDefault(); 
    $("#error").slideDown().text("Your first name have to contain at least 3 letters"); 
     return; 
    } 
} 

if($("#lastName").val().length > 0){ 
    if ($("#lastName").val().length <= 2){ 
     event.preventDefault(); 
     $("#error").slideDown().text("Your last name have to contain at least 3 letters"); 
     return; 
    } 
} 
相关问题