0

ここに初めて投稿します。このナンセンスにさらにイライラするための最後の選択肢です。このコード セグメントには何も問題はありませんが、フィールドを空白のままにしても、onsubmit 条件は常に true を返すようです (その場で確認する必要があります)。

注: 私の JS 関数は現時点では空白で、まだそこまで進んでいません。

さらなる調査メモ: すべてをキャッチするために書いた最後のケースでさえ機能していません。送信を押すとすぐにチェックアウトページに到達しようとし、onsubmit を完全に無視しています。

<?xml version = "1.0" encoding = "utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title> Book registration. </title>
    <script type = "text/javascript" src = 'Script/main.js'></script>
</head>

<body>
    <form method = "POST" action = "Checkout" onsubmit = "validate(this)">      
        <fieldset>
        <legend> Book Registry Access </legend>

        <p> ISBN: <input type = "text" size = "14" name = "ISBN" onchange = "if(this.value != '') ajaxVerif('checkISBN', this.value, this.id);"> </p>
        <p> Title: <input type = "text" size = "32" id = "title" name = "title"> </p>
        <p> Author: <input type = "text" size = "32" id = "author" name = "author"> </p>
        <p> Edition: <input type = "text" size = "2" id = "edition" name = "edition" onchange = "if(this.value != '') ajaxVerif('checkEdi', this.value, this.id);"> </p>
        <p> <input type = "submit"> </p>

        </fieldset>
    </form>
</body>
</html>

    function validate(thisForm)
    {
    if (thisForm.ISBN.value == '') {
                    alert('Please enter a valid ISBN number in the form XXXX-YYYY-ZZZZ');
                    this.ISBN.focus();
                    return false;
                }
    if (thisForm.title.value == '') {
                    alert('Please fill in the title field.');
                    this.title.focus();
                    return false;
                }   
    if (thisForm.author.value == '') {
                    alert('Please fill in the author field.');
                    this.author.focus();
                    return false;
                }
    if (thisForm.edition.value == '') {
                    alert('Please enter a valid edition number.');
                    this.edition.focus();
                    return false;
                }
    alert('Success! This test form is working! (TO BE DELETED!!)');
    return false;
    }

編集:きれいにするために編集されましたが、まだ機能しません。したがって、明らかに false を返すことを除いて、すべてが検証に関して機能します。常に次のページにジャンプしようとします (ダミー ページにリンクしているため失敗します)。理由はよくわかりませんが、返品はすべて問題ないはずです。

最終編集: 修正しました。onsubmit = 'return validate(this)'> と書くのを忘れていました

4

1 に答える 1

1

まず、インライン JavaScript を避けます。

}クリーンな JavaScript コードを維持することで、この欠落に気付いたはずです。

  if (this.title.value == '') {
    alert('Please fill in the title field.');
    this.title.focus();
    return false;
  }
--^--

アップデート

  1. return、およびを忘れました

    onsubmit = "return validate(this);"
             ---^^^^^^---         ---^---
    
  2. thisまた、 との置換を完了するのを忘れていましたthisForm

于 2012-12-06T18:13:35.003 に答える