2014-11-28 4 views
-1

Кажется, я не могу найти ответ на этот вопрос.JQUERY, если строка содержит два слова

У меня есть пользователи, заполняющие форму, чтобы ввести свое имя для билета. Это делается с одним полем для всего имени. Теперь важно проверить как второе, так и первое имя.

Все работает отлично. Но для жизни меня не может показаться, что выработаете новое заявление Elseif, чтобы проверить, что var содержит два слова.

Любые советы?

$(document).ready(function(){ 
    $('#user_details_form_button').live('click', function(){ 
     var check_name_b = ''; 
     var check_email_b = ''; 
     var check_phone_b = ''; 
     proceed = true; 
     window.location.hash = 'tickethash'; 
     $('.userinput_name_b').each(function(){ 

      check_name_b = $(this).val(); 
      if(check_name_b == ''){ 
       $(this).css('border-color','#FF0000'); 
       $(this).attr("placeholder", "*Full Name Required"); 
       proceed = false; 
      }else{ 
       if(check_name_b.replace(/ /g,'').length < 5){ 
        $(this).css('border-color','#FF0000'); 
        $(this).attr("placeholder", "*Full Name Required"); 
        $(this).val(""); 
        proceed = false; 
       }else if(check_name_b.length > 40){ 
        $(this).css('border-color','#FF0000'); 
        $(this).attr("placeholder", "*Full Name Required"); 
        $(this).val(""); 
        proceed = false; 
       }else{ 
        $(this).css('border-color','#CCCCCC'); 
       } 
      } 

     }); 
+2

я хотел бы предложить не только проверка на 2-х слов, как некоторые испанские люди для exmaple имеют имена, как: «Карлос Botega дос Ditos». –

+1

Кроме того, 'live' устарело некоторое время. Вместо этого используйте 'on'. –

ответ

1

Вы можете использовать split(), чтобы сделать это для вас ...

var check_name_b = $(this).val().trim().split(" "); 
if (check_name_b.length < 2) { 
    // no space in name, therefore it's only one word (or none!) 
} 

Однако я настоятельно рекомендую использовать 2 поля для имени и фамилии. Мало того, что люди ожидают, привыкшие видеть его практически на всех других веб-сайтах, это более надежный и простой в использовании вход. Что произойдет, если я поставлю «Мистер Арчер»? Это не мое полное имя, но это 2 слова.

+1

Да, я думаю, вы, вероятно, имеете действительную точку. Кажется, я пытаюсь сражаться с проигравшей битвой, делая так. Я рассмотрю ваш провал! – bossbowser

+0

Я немного обновил его, чтобы теперь обрезать строковое значение перед его разбиением. Как отметил @lolka_bolka ниже, он принял бы только кучу пробелов ни с чем другим. – Archer

1

Вы можете использовать это регулярное выражение:

if (!check_name_b.match(/^[a-z\.]+ [a-z]+/i)) { 
    alert('Invalid name'); 
} 

Не использовать split, как и другие говорит, потому что, если я только что ввели некоторые пробелы, это также будет успешным.

+0

Извините, что был noob, но как именно я мог бы это реализовать? else if (str.indexOf (/^[a-z \.] + [a-z] +/i)> = 2) ??? – bossbowser

+1

См. Мой отредактированный ответ. – vaso123

+0

Спасибо @lolka_bolka! – bossbowser

0

Все работает отлично. Но для жизни меня не может показаться, что выработаете новое заявление Elseif, чтобы проверить, что var содержит два слова.

Два слова означают, что между ними есть пространство.

Попробуйте функцию .split() от jQuery.

Как:

words = input.split(' '); 
if(words.length >= 2) { 
    //do something 
} 
Смежные вопросы