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;
    }
}

到目前为止,唯一可行的是,如果我将所有内容都放入一个 .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

首先,您不能在一个script标签中混合使用 src-ref 和本地代码。

<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 回答