возвращаемое значение JavaScript часть 2 - PullRequest
0 голосов
/ 04 февраля 2011

Вчера мне очень помогли, и у меня есть вопрос / проблема.Что касается формы HTML, когда пользователь нажимает onSubmit = "return external ()", функция 'external' возвращает только одну из двух функций внутри (либо checkname, либо checkpostal).Как мне заставить его проверить обе функции?Вопрос Noob, я уверен, но я хочу понять, а не просто скопировать вставить из множества форм там.

var postalconfig = /^\D{1}\d{1}\D{1}\-?\d{1}\D{1}\d{1}$/;

function outer() {
    function checkname(f_name) {
        if (document.myform.f_name.value == "") {
            alert("Enter your First Name");
            return false;
        } else {
            alert("valid First Name");
            return true;
        }
    }
    return checkname();

    function checkpostal(postal_code) {
        if (postalconfig.test(document.myform.postal_code.value)) {
            alert("VALID postal");
            return true;
        } else {
            alert("INVALID postal");
            return false;
        }
    }
    return checkpostal();
} //end of outer

HTML:

<form name="myform" action="index.php" onSubmit="return outer();" method="post">
  First Name
  <input name="f_name"  type="text" />
  <br />
  Telephone
  <input name="telephone" type="text" />
  <br />
   <input name="Submit" type="submit"  value="Submit Form" >
</form>

Ответы [ 4 ]

3 голосов
/ 04 февраля 2011

выполнение функции external () останавливается всякий раз, когда вы возвращаетесь.

попробуйте этот единственный оператор возврата:

return  checkname() && checkpostal();
2 голосов
/ 04 февраля 2011

Когда вы пишете return checkname();, ваша функция немедленно останавливается.
Невозможно вернуть значение, а затем запустить остальную часть функции.

Вместо этого вам нужно вызвать обе внутренние функции, а затем использовать логические операторы, чтобы объединить их в один логический тип.
Например:

return checkname() && checkpostal();
0 голосов
/ 04 февраля 2011

То, что вы делаете, технически правильно, хотя я могу посоветовать вам определять функции отдельно. Используйте external просто для их вызова и проверки их значений, поэтому у вас будет:

function outer(){   
    return (checkname() && checkpostal());
}

function checkname(){
    // Code for checkname
}

function checkpostal(){
    // Code for checkpostal
}
0 голосов
/ 04 февраля 2011

Просто сделайте что-нибудь вместо этого или возврат или в конце сделайте.

return checkName () && checkPostal ();

...