1

Webフォームを使用してWebサイトを構築しようとしています。Godaddy のデフォルトの Web フォーム php を使用していますが、フォームの必須フィールドを検証する方法がわかりません。

ユーザーが検証前にフォームを送信できないようにしたい。この問題に対処する他のユーザーによってオンラインで送信された JavaScript ファイルを見つけましたが、動作させることができないようです。

<script language="javascript" type="text/javascript">
function checkForm() {
    if (form.FirstName.value == "") {
        alert("Please enter your first name");
        form.FirstName.focus();
        return false;
    }

    if (form.LastName.value == "") {
        alert("Please enter your last name");
        form.LastName.focus();
        return false;
    }
    var email = form.email.value;
    if (email.indexOf('@') == -1) {
        alert("Plelase enter valid email");
        form.email.focus();
        return false;
    }
    return true;
}
</script>

以下はフォームです。

<form onsubmit="return checkForm()" action="/webformmailer.php" method="post"> 
<input type="hidden" name="subject" value="Submission" /> 
<input type="hidden" name="redirect" value="thankyou.html" />
<span>First Name:</span><br>
<input type="text" name="FirstName"/><br>
<span>Last Name:</span><br>
<input type="text" name="LastName" /><br>
<span>*Email:</span><br>
<input type="text" name="email" /><br>
<span>*Comments:</span><br>
<textarea name="comments" cols="40" rows="10">
</textarea><br>

<input type="submit" name="submit" value="submit"/> <span id ="required">*required field</span>
<input type="hidden" name="form_order" value="alpha"/> <input type="hidden" name="form_delivery" value="daily"/> <input type="hidden" name="form_format" value="html"/> 

何も入力せずに送信しようとすると、ありがとうにリダイレクトされます。

4

3 に答える 3

3

form関数で定義されていません。これを処理するにはいくつかの方法があります。最も簡単なのは、とに変更return checkForm()することですreturn checkForm(this)

function checkForm(form) {
于 2013-06-05T03:33:29.403 に答える
0

2 つのことを忘れていました: まず、name="form"を追加してください

<form name="form" onsubmit="return checkForm()" action="/webformmailer.php" method="post"> 

2 番目に、フォームを閉じます。このコードを HTML の最後に追加してください。

</form>

HTML は次のようになります。

<form name="form" onsubmit="return checkForm()" action="/webformmailer.php" method="post"> 
    <input type="hidden" name="subject" value="Submission" /> 
    <input type="hidden" name="redirect" value="thankyou.html" />
    <span>First Name:</span><br>
    <input type="text" name="FirstName"/><br>
    <span>Last Name:</span><br>
    <input type="text" name="LastName" /><br>
    <span>*Email:</span><br>
    <input type="text" name="email" /><br>
    <span>*Comments:</span><br>
    <textarea name="comments" cols="40" rows="10"></textarea><br>
    <input type="submit" name="submit" value="submit"/> 
    <span id ="required">*required field</span>
    <input type="hidden" name="form_order" value="alpha"/> 
    <input type="hidden" name="form_delivery" value="daily"/> 
    <input type="hidden" name="form_format" value="html"/> 
</form>

もう 1 つは JavaScript で、メール アドレスを確認する関数が正しくありません。正しいのは次のとおりです。

var email = form.email.value;
var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;

if (!email.match(re) || !email) {
  // incorrect email address
}

新しいスクリプトは次のようになります。

<script language="javascript" type="text/javascript">
function checkForm() {
    if (form.FirstName.value == "") {
        alert("Please enter your first name");
        form.FirstName.focus();
        return false;
    }

    if (form.LastName.value == "") {
        alert("Please enter your last name");
        form.LastName.focus();
        return false;
    }
    var email = form.email.value;
    var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;

    if (!email.match(re) || !email) {
        alert("Plelase enter valid email");
        form.email.focus();
        return false;
    }
    return true;
}
</script>

幸運を!

于 2013-06-05T04:05:13.233 に答える
0

フォームで、 に変更checkForm()checkForm(this)ます。次に、JavaScriptで次のように変更function checkForm() {しますfunction checkForm(form) {

多分これが役立つでしょう。

于 2013-06-05T03:34:57.423 に答える