2015-11-29 3 views
3

Я пытаюсь вызвать несколько функций JavaScript. Он отправляется, хотя мои функции возвращают false. Я получаю предупреждающие сообщения, но он все равно подчиняется.Вызов нескольких функций Javascript onSubmit

Это моя форма.

<form name="myform" id="myform" action="receipt.html" method="post" onSubmit="return allValidation();"> 
+0

Вы не используете возвращаемые значения. – SLaks

+0

@SLaks Теперь я редактировал функции. Что-то вроде того? – dafyddgj

ответ

2

Вы ничего не возвращаются в allValidation, так что он будет продолжать следующего выполнения метода. Попробуйте это,

function allValidation() { 
    return validateForm() && selectCountry() && validateEmail(); 
} 
+0

Я пробовал это, но теперь он вообще не отправляет – dafyddgj

+0

. По умолчанию значение 'return true' (как последняя строка) добавляется по умолчанию во всех методах' validateForm() ',' selectCountry() ',' validateEmail() '. –

+0

Теперь он отправляет, если validateForm является истинным и обходит другие две функции. – dafyddgj

1

Это потому, что ваша функция всегда возвращает истину, независимо от того, что возвращаемые значения в validateForm() selectCountry() и validateEmail() функции.

Изменение функции allValidation(), как это:

function allValidation() 
{ 
    return validateForm() && selectCountry() && validateEmail(); 
} 
+0

Это обходит функции selectCountry() и validateEmail() и отправляет, если validateForm() работает. – dafyddgj

+0

@dafyddgj, я так не думаю .. Я протестировал код на Chrome 47, Firefox 42 и IE 8, и он работал над всеми из них. Javascript оценивает функции один за другим, начиная с левого и останавливается на первой функции, которая возвращает false (если есть). В таком случае allValidation() возвращает false, и, действительно, остальные функции обходят. Если все функции возвращают true, то allValidation() возвращает true. Итак, используя 'return validateForm() && selectCountry() && validateEmail();' или 'return (validateForm() && selectCountry() && validateEmail());' имеет точно такой же эффект. –

2

Вы можете использовать несколько функций, а затем and свои результаты, чтобы получить окончательное подтверждение. а также добавить return true заявления во всех функциях, где проверка успешна

function allValidation() 
    { 
     return (validateForm() && selectCountry() && validateEmail()); 
    } 
0
function allValidation(){ 
    return validateForm() && selectCountry() && validateEmail(); 
} 
+1

Пожалуйста, избегайте ответов только на код. Пожалуйста, добавьте объяснение. –

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