2010-12-06 13 views
0

私はユーザーの電子メールアドレスを確認しています。しかし、その関数を呼び出すと問題が現れ、フォームは電子メールアドレスの検証なしに送信されます。そのコードに何が間違っているのか教えてください。電子メールの検証問題

function validateEmail(fld) { 
var error=""; 
var tfld = trim(fld.value);     
var emailFilter = /^[^@][email protected][^@.]+\.[^@]*\w\w$/ ; 
var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ; 
if (fld.value == "") { 
    fld.style.background = 'Pink'; 
    error = "You didn't enter an email address.\n"; 
} else if (!emailFilter.test(tfld)) {   
    fld.style.background = 'Pink'; 
    error = "Please enter a valid email address.\n"; 
} else if (fld.value.match(illegalChars)) { 
    fld.style.background = 'Pink'; 
    error = "The email address contains illegal characters.\n"; 
} else { 
    fld.style.background = 'White'; 
} 
return error; } 
+5

*私*問題が何であったか(みんな)(教えてくださいつまり、どのようなエラーメッセージが表示されたのか、またどのような出力が期待されたのか、実際の出力がどう違うのか)。特に、フォームが検証なしで送信されている場合は、誤解していない限り、問題はフォーム*にあり、この関数ではありません。 –

+0

フィールドを空のままにしておくと「あなたはメールアドレスを入力していません」と表示されますが、違法な文字を入力すると正しく機能しませんでした。 – Adeel

答えて

0

は常にtrueまたはfalseを返す: -

function validateEmail(fld) { 
    var error=""; 
    var tfld = trim(fld.value);     
    var emailFilter = /^[^@][email protected][^@.]+\.[^@]*\w\w$/ ; 
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ; 
    if (fld.value == "") { 
     fld.style.background = 'Pink'; 
     error = "You didn't enter an email address.\n"; 
    } else if (!emailFilter.test(tfld)) {   
     fld.style.background = 'Pink'; 
     error = "Please enter a valid email address.\n"; 
    } else if (fld.value.match(illegalChars)) { 
     fld.style.background = 'Pink'; 
     error = "The email address contains illegal characters.\n"; 
    } else { 
     fld.style.background = 'White'; 
    } 
    if (error == '') 
    { 
     return true; 
    } 
    else 
    { 
     alert(error); 
     return false; 
    } 

}

はこのようにあなたの関数を呼び出します -

<input type="submit" onsubmit="return validateEmail(email.val)"> 
+1

そして、常にサーバー側の最終検証を実行します。 JavaScriptをオンにしているユーザーに頼らないでください! (実際にHTMLコードを使ってデータを送信するユーザーには依存しないでください...) –

0
function validateEmail(fld) { 
var error=""; 
var tfld = trim(fld.value);     
var emailFilter = /^[^@][email protected][^@.]+\.[^@]*\w\w$/ ; 
var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ; 
if (fld.value == "" || fld.value.length == 0) { 
    fld.style.background = 'Pink'; 
    error = "You didn't enter an email address.\n"; 
} else if (!emailFilter.test(tfld)) {   
    fld.style.background = 'Pink'; 
    error = "Please enter a valid email address.\n"; 
} else if (fld.value.match(illegalChars)) { 
    fld.style.background = 'Pink'; 
    error = "The email address contains illegal characters.\n"; 
} else { 
    fld.style.background = 'White'; 
} 
return error; } 

それを試してみてください!

関連する問題