2016-03-25 17 views
-1

特定のクラスで動的入力フィールドをチェックする関数があります。これらのフィールドには電子メールアドレスが入力され、有効な電子メールアドレスかどうかがチェックされます。Javascript関数は、定義されていないので返しません。

複数のメールフィールドがある可能性があります。いずれかが電子メールアドレステストに失敗した場合は、FALSEを返します。それ以外の場合はTRUEを返します。最後にサブミット時にsave_form()が実行されました。 falseが得られた場合は停止し、そうでない場合は続行します。しかし、それは常に「未定義」になります。

function validate_email_string(email_address) { 
    var emailReg=/^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
    var emailTest = emailReg.test(email_address); 
    var result = (emailTest === false) ? false : true; 
    return result; 
} 

function validate_email_extensions(email_field_selector, message) { 
    var invalid_message = null; 
    if (typeof message !== "undefined") { 
    invalid_message = message; 
    } else { 
    invalid_message = '<?=lang("i18n_invalid_email_address");?>'; 
    } 
    var email_fields_length = $(email_field_selector).length; 
    var is_valid = true; 
    if (email_fields_length) { 
    $(email_field_selector).each(function(index, el) { 
     if($(el).val()) { 
     if(!validate_email_string($(el).val())) { 
      is_valid = false; 
     } 
     if (index === email_fields_length - 1) { 
      if (is_valid === false) { 
      Interact.show(invalid_message); 
      } 
      return is_valid; 
     } 
     } else { 
     if (index === email_fields_length - 1) { 
      if (is_valid === false) { 
      Interact.show(invalid_message); 
      } 
      return is_valid; 
     } 
     } 
    }); 
    } else { 
    return is_valid; 
    } 
} 

function save_form() { 
    var emails = validate_email_extensions('.jq-extension-email'); 
    if(!emails){return false} 
    .... 

しかしvalidate_email_extensions関数はundefinedを返します:ここで

は私が持っているものです。私はconsole.log()をどこに置いても、おそらくそれは私の盲目ですが、どんな助けもありがとうございます。

+0

@Hanky Panky最初に 'if'は何も返さないはずです:)デフォルトのメッセージを設定するだけです。とにかく貢献してくれてありがとう。 – YahyaE

+1

ええ私は正確に言及していませんでしたが、私はそれがあいまいである可能性があることを認識したので、コメントを削除し、別のコンテンツの回答に入れました –

答えて

3

お客様のご返品はvalidate_email_extensionsになります。validate_email_extensionsからsave_formには届かない場合があります。

validate_email_extensionsは、値をsave_formに戻す必要があります。この場合は、FALSE

if (email_fields_length) { 

制御はそのif状態になったときにそれが値を返さないとき

あなたの機能が正しく値を返しているだけです。

+0

'is_valid'がこのステートメントの前に定義されています。したがって、デフォルトで 'is_valid'を' true'に設定することが考えられます。検証が失敗した場合は、各ループ中に 'false'を設定します。そして、最後のループの後で 'ìs_valid'が' false'であることを確認してください。そうである場合、少なくとも1つのフィールドが検証から失敗したことを意味します。ですから、コードの残りの部分に気付くと、それは大丈夫であるはずです。しかし、私が専門家であれば、私はここで質問しないので、間違っているかもしれません:) – YahyaE

+0

何かを定義することは何も意味しません。あなたはそれを呼び出し元に返すわけではないので、呼び出し元にとっては未定義です。関数内に百科事典全体を定義することはできますが、呼び出し元に正しく戻さない(またはグローバルにする)と、呼び出し元の範囲外です。 –

+0

はい、それぞれの最後のループであれば返すので、下の行だけです。 – YahyaE

関連する問題