2015-08-06 5 views
1

Я пытаюсь отобразить предупреждающее сообщение, когда пользователь вводит определенный текст в поле ввода. Проблема в том, что я хочу только один раз вернуть false, чтобы пользователь мог отправить форму на второй клик, даже если они не меняют текст. Я попытался добавить счетчик, но jquery не помнит счет на второй щелчок. Каков наилучший способ сделать это?submit function - отображать предупреждающее сообщение

if (email.val().indexOf("gmail") > -1)) 
     { 
     $('input[name=email]').css('border-color','red');  
     $("#submit").after('<p>Error - Do you want to use a gmail account?</p>'); 
     return false; 
     } 
+0

Вы можете посмотреть в 'confirm' функции JavaScript в. http://www.w3schools.com/jsref/met_win_confirm.asp –

ответ

0

Почему бы вам не поместить класс в текстовое поле и удалить его при первом сбое? Таким образом, когда вы ищете его с помощью jQuery во второй раз, вы не сможете его найти и не сможете применить правило. Я implmented это так:

var submit = function() 
{ 
    var email = $('.emailFirstTry') 

    if (email.length > 0 && email.val().indexOf("gmail") > -1) 
    { 
     $('input[name=email]').css('border-color','red');  
     $("#submit").text('Error - Do you want to use a gmail account'); 
     $('.emailFirstTry').removeClass('emailFirstTry'); 
     return false; 
    } 

    $('input[name=email]').css('border-color','none'); 
    $("#submit").text('Success!'); 
    return true; 
}; 

Вы можете увидеть его в действии на этой скрипке прямо здесь: http://jsfiddle.net/ozrevulsion/39wjbwcr/

Надежда помогает :)

1

Я хотел бы использовать флаг, чтобы определить, если они уже пытались представить, и если они не имеют, то вы даете им предупреждение и вернуться ложным:

var triedSubmit = false; 
$(/* Your jQuery Object */).click(function() { 
    if (email.val().indexOf("gmail") > -1)) 
    { 
      if (!triedSubmit){ 
       $('input[name=email]').css('border-color','red');  
       $("#submit").after('<p>Error - Do you want to use a gmail account?</p>'); 
       triedSubmit = true; 
       return false; 
      } 
    } 
} 
1

Просто настроить некоторые вид флага

var flags = {}; // in some higher scope 
// then later, in your verification function 
if (email.val().indexOf("gmail") > -1 && !flags.warnedGmail) { 
    $('input[name=email]').css('border-color','red');  
    $("#submit").after('<p>Error - Do you want to use a gmail account?</p>'); 
    flags.warnedGmail = true; 
    return false; 
} 
+0

'flags' выйдет за рамки после возвращения функции. Просто отметьте, что 'flags' должна быть глобальной переменной. –

+0

Он не должен быть глобальным, только в более широком диапазоне, сделав его более понятным –

Смежные вопросы