1

フォームを送信したいのですが。しかしその前に私はそれを検証したいと思います。検証はjavascriptメソッドです。javascriptメソッドがフォームと同じ.jspファイルにある限り、すべて問題ありません。

しかし、それを外部のjavascriptファイルに入れたいので、メソッドが呼び出されることはありません。なんで?

この部分には、javascriptを.jspファイルに含める必要があります。

  <script type="text/javascript" src="Validate.js">
    var val = new Validate();
    var result= val.validateArticle();
</script>

これが私が提出したいフォームです:

<form name="articleAnswerForm" action="answer.html"
        action="answer.html" onsubmit="return result" method="post">
        Was is der Artikel?<br> <select name="art">
            <option>???</option>
            <option>der</option>
            <option>die</option>
            <option>das</option>
        </select> <input type="hidden" name="richtig" value="${selected.article}">
        <h1>${selected.german}</h1>
        <input type="submit" value="Antworten">
    </form>

Validate.jsは、.jspファイルと同じディレクトリにあります。これがValidate.jsです(ただし、.jspファイルにある場合は正常に機能します)。

function validateArticle() {
    var a = document.forms["articleAnswerForm"]["art"].value;
    var richtig = document.forms["articleAnswerForm"]["richtig"].value;
    if (a == null || a == "" || a != richtig) {
        alert("Nein " + a + " ist falsch");
        return false;
    }
}

これまでのところ、機能するのは、以下のようにすべてを1つの.jspファイルに入れる場合だけです。

    <script type="text/javascript" >
function validateArticle() {
    var a = document.forms["articleAnswerForm"]["art"].value;
    var richtig = document.forms["articleAnswerForm"]["richtig"].value;
    if (a == null || a == "" || a != richtig) {
        alert("Nein " + a + " ist falsch");
        return false;
    }
}
</script>

    <form name="articleAnswerForm" action="answer.html"
        action="answer.html" onsubmit="return validateArticle()" method="post">
        Was is der Artikel?<br> <select name="art">
            <option>???</option>
            <option>der</option>
            <option>die</option>
            <option>das</option>
        </select> <input type="hidden" name="richtig" value="${selected.article}">
        <h1>${selected.german}</h1>
        <input type="submit" value="Antworten">
    </form>

    <form:form method="post" action="word.html">
        <input type="submit" value="nächste Wort">
    </form:form>
</c:if>

4

2 に答える 2

3

まず、src-refとローカルコードを1つのscriptタグに混在させることはできません。

<script type="text/javascript" src="Validate.js"></script>
<script type="text/javascript">
    var val = new Validate(); // 'new Validate' won't work.
    var result= val.validateArticle();
</script>

HTMLでは、onsubmit="return result"おそらく意図したことを実行しません。送信時に検証したいですよね?したがってvalidateArticle()、ページの読み込みではなく、関数を呼び出す必要があります。Validateまた、オブジェクトをインスタンス化する必要はありません。

onsubmit="return validateArticle()"
于 2012-09-03T09:25:04.203 に答える
1

必要なのはこれだけです。検証機能を使用するためにインスタンスを作成する必要はありません。

脚本:

<script type="text/javascript" src="Validate.js"></script>

HTMLフォーム:

<form name="articleAnswerForm" action="answer.html"
    action="answer.html" onsubmit="return validateArticle()" method="post">
    Was is der Artikel?<br> <select name="art">
        <option>???</option>
        <option>der</option>
        <option>die</option>
        <option>das</option>
    </select> <input type="hidden" name="richtig" value="${selected.article}">
    <h1>${selected.german}</h1>
    <input type="submit" value="Antworten">
</form>

したがって、Javascriptを外部ファイルに移動する場合。アクセスするために特別なことをする必要はありません。インスタンス化は必要ありません。ファイル自体に含まれている場合と同じように、JavaScriptを使用してください。動作しない場合は、ファイルが正しく読み込まれていない可能性があります。この場合、ファイルシステムによって大文字と小文字が区別されるため、ファイルが正しいディレクトリにあり、ファイルの大文字と小文字が正しく設定されていることを確認してください。

于 2012-09-03T09:27:39.447 に答える