私はこの連絡先フォームを使用しています。フォームの検証がchromeやfirefoxで機能していません
<form name="contact" action="mailto:[email protected]&subject=subject&body=message"
onsubmit="return validate()" method="post" enctype="text/plain">
<label for="mail">Your mail address *</label>
<input type="text" name="mail"/></br></br>
<label for="subject">Subject *</label>
<input type="text" name="subject"/></br>
<label for="message">Your message *</label>
<textarea id="txtarea" name="message" form="contact"></textarea>
<input type="submit" value="Send"/>
</form>
そしてこの
function validateMail(mail) {
var re = /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)| (\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(mail);
}
function validate(){
var x = document.forms["contact"];
if (x[0].value == null || x[0].value == ""){
alert("Your mail address");
return false;
}else{
if(!validateMail(x[0].value)){
alert("mail address not valid");
return false;
}
}
if(x[1].value == null || x[1].value == ""){
alert("Add a subject");
return false;
}
if(x['txtarea'].value.length < 1 || x['txtarea'].value == '' || x['txtarea'].value == null){
alert("Add your message");
return false;
}
}
このコードはIE11(11.0.9600.18500)に完璧に動作しますが、クロム54.0.2840.71メートル(64ビット)およびFF 49.0.2はちょうど私のJavaScriptを無視して続行するJavaScript空欄または有効な情報がないメールを送信する。
PS:私は、フォーム[#]オプション
編集でそれを見つける傾けるので、テキストエリアのIDを使用してイム:私はIEが適切に[オブジェクトHTML TextAreaElement]としてテキストエリアを識別することがわかったが、ChromeとFirefoxの両方のために使用してそれを解決するために管理され、未定義の
フォームの名前が連絡先で、あなたがdocument.forms [「連絡先ヘルプを」]使用しているために少し最適化されたJavaScriptの関数です。それはタイプミスですか?それはdocument.forms ["contact"]ではありません。 ..? –
'onsubmit =" return validate() "'を使う代わりに、 'onsubmit =" validate() "'を直接使うこともできます。 –
@HimanshuAggarwal:いいえ、できません。関数がfalseを返す場合、後者はフォームの送信を妨げません。 – CBroe