1

私のフォームは Firefox と IE で正常に動作しています。onsubmit を呼び出すと、js 関数を呼び出してコードを検証し、検証が良好であればフォームを送信します。

ただし、クロムでは検証は行われませんが、フォームを直接送信するだけです。

なぜそうなのかはわかりませんが、たくさん検索しましたが無駄でした。

この問題の解決に向けて、どんな助けも素晴らしいでしょう。

フォームコード:

<form name="myform" action="queryfeedback.php" method="post" onSubmit="return validateForm(myform);">
<label for="labelField_Name" id="idLabel_Name"></label>
<input type="text" name="nameField_Name" id="idField_Name" placeholder="Enter your name here"/>
<br />
<label for="labelField_EMail" id="idLabel_EMail"></label>
<input name="nameField_EMail" type="text" id="idField_EMail" placeholder="Enter your E-Mail address here" />
<br />
<label for="labelField_Message" id="idLabel_Message"></label>
<textarea name="nameField_Message" id="idField_Message" placeholder="Enter your message for us here"></textarea>
<br />
<input type="Submit" name="nameSubmit" id="idButton_Submit" value="Submit"  alt="Submit Button"/>
</form>

検証コード:

    function validateForm(form)
{ 
alert(form.nameField_Name.value);
//alert(formValueEMail.value);
//alert(formValueMessage.value);
if(form.nameField_Name.value=='')
{
    alert("Name field is required. Please fill it in.");
    form.nameField_Name.focus();
    form.nameField_Name.select();
    return false;
}
if(form.nameField_Name.value=='Enter your name here')
{
    alert("Name field is required. Please fill it in.");
    form.nameField_Name.focus();
    form.nameField_Name.select();
    return false;
}
if(form.nameField_EMail.value=='')
{
    alert("E-Mail Address field is required. Please fill it in.");
    form.nameField_EMail.focus();
    form.nameField_EMail.select();
    return false;
}
if(form.nameField_EMail.value=='Enter your E-Mail address here')
{
    alert("E-Mail Address field is required. Please fill it in.");
    form.nameField_EMail.focus();
    form.nameField_EMail.select();
    return false;
}
//Checking for correct format of EMail address.
var x=document.forms["myform"]["nameField_EMail"].value;
var atpos=x.indexOf("@");
var dotpos=x.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
{
    alert("Not a valid e-mail address");
    return false;
}
if(form.nameField_Message.value=='')
{
    alert("Message field is required. Please fill it in.");
    form.nameField_Message.focus();
    form.nameField_Message.select();
    return false;
}
if(form.nameField_Message.value=='Enter your message for us here')
{
    alert("Message field is required. Please fill it in.");
    form.nameField_Message.focus();
    form.nameField_Message.select();
    return false;
}
return true;
4

2 に答える 2

0

イベントパラメータを渡して実行event.preventDefault()し、検証されるまでフォームの送信を停止してみてください。

于 2012-06-25T18:36:35.373 に答える
0
  1. 関数'validateForm'を。で閉じていません}。したがって、エラーがスローされる可能性があります。
  2. onsubmit="return validateForm(this);"属性名にはキャメルonsubmitケースがなく、引数はthis
  3. validateFormグローバル関数である必要があります。

実例: http: //jsfiddle.net/qrZ8a/3/

于 2012-06-25T18:40:14.943 に答える