2013-11-09 4 views
0

Я пытаюсь проверить форму, чтобы проверить, если входы являются пустыми или не THIS JSFIDDLE мне удалось успешно проверить форму, когда я использовал все тело функции validateEmpty() непосредственно внутри функции .submit() но просто для того, чтобы поддерживать все, что я организовал, я попытался поместить все внутри функции (validateEmpty()) и просто позвонить через функцию .submit(), но по какой-либо причине процесс проверки не работает!Validating Форма Использование пользовательской функции

Вот код у меня есть:

$(document).ready(function() { 
function validateEmpty(){ 
     var abort = false; 
     $("div.err").remove(); 
     $(':input[required]').each(function() { 
      if ($(this).val()==='') { 
       $(this).parent().after('<div class="err">This is a Requierd Field</div>'); 
       abort = true; 
      } 
     }) 
     if (abort) { return false; } else { return true; } 
} 
$('#myform').submit(function() { 
validateEmpty(); 
    }) 
}); 

вы можете, пожалуйста, дайте мне знать, что я делаю неправильно? Благодаря

ответ

3

validateEmpty функция возвращает true или false в его конце, но на обработчик событий вы никогда не return это, так JQuery не получает это значение. Все, что вам нужно, это добавить return вызов обработчика:

$('#myform').submit(function() { 
    return validateEmpty(); 
}); 

Кроме того, обратите внимание, что вы можете передать функцию непосредственно, если вам не нужно делать ничего лишнего:

$('#myform').submit(validateEmpty); 

в соответствии с просьбой в комментариях, здесь идет на два пути параметризовать validateEmpty функции:

function validateEmpty($inputs) { 
    var abort = false; 
    $("div.err").remove(); 

    $inputs.each(function() { 
    if ($(this).val()==='') { 
     $(this).parent().after('<div class="err">This is a Requierd Field</div>'); 
     abort = true; 
    } 
    }); 

    if (abort) { return false; } else { return true; } 
} 

$("#myform").submit(function() { 
    // Take the 'required' inputs inside #myform only 
    var $inputs = $(this, "input[required]"); 
    return validateEmpty($inputs); 
}); 
+0

Хорошо это ковшики Теперь спасибо, но если честно, я действительно не понимаю, что вы имеете в виду «но вы не передавая его в JQuery»! – Behseini

+0

Извините, я думаю, я был слишком кратким. Я только что отредактировал ответ, теперь ясно? –

+0

Огромное спасибо за отличное объяснение, просто вопрос, есть ли способ передать параметр через validateEmpty(); таким образом, чтобы не иметь «$ (': input [required]')» жестко закодирован и выбирать цели для функции отправки следующим образом: «return validateEmpty (': input [required]'); еще раз спасибо за ваши прекрасные намеки – Behseini

1

Пожалуйста, добавьте рамки Jquery в вашем jsfiddle примере и попробовать

$('#myform').submit(function() { 
    return validateEmpty(); 
}); 
Смежные вопросы