0

いくつかの JSP ページを作成していますが、既存のフォームのボタンに機能を追加する必要があります。このフォームでは、送信ボタンは別の jsp ビューへのナビゲーションを実行し (私は Google AppEngine で Slim3 フレームワークの MVC パターンを使用しています)、別の異なる JSP ビューへのナビゲーションを実行するには別のボタン (送信ボタンの隣) が必要です。 . したがって、これを実現するには、既存のフォームに「ボタン」タイプの別のボタンを作成し、JavaScript コードを配置して「代替」ナビゲーションを実行する .js ファイルを作成し、JSP ビューに .js を含めます。しかし、それは動作しません._. コードは次のとおりです。

次のフォームを含む JSP ページ:

...
<body>
    <%@ include file="script.js" %>
    <%@ include file="../header.jsp" %>
    <%@ include file="sidebar.jsp" %> 

    <div id="content">
        <div id="main">
            <p>Hello main admin testimonials edit Index !!!</p>
            <h2><b>Modifica Testimonial</b></h2>
            <form action="update" method="post">
                <h3>Nome: </h3>
                <textarea name="name">${f:h(testimonial.name)}</textarea><br />
                <h3>Cognome: </h3>
                <textarea name="surname">${f:h(testimonial.surname)}</textarea><br />
                <h3>Dettagli: </h3>
                <textarea name="details">${f:h(testimonial.details)}</textarea><br />
                <h3>Progetto:</h3>
                <select name="projectKey" selected="${f:h(testimonial.projectRef.key)}">
                    <c:forEach items="${projectsList}" var="project">
                        <option value="${f:h(project.key)}">${f:h(project.name)}</option>
                    </c:forEach>
                </select>
                <br />
                <input type="submit" value="Aggiorna"/>
                <input type="button" value="Elimina" onclick="delete()"/>
                <input type="hidden" ${f:hidden("key")}/>
            </form>
        </div>
    </div>
</body>
</html>

script.js:

<script type="text/javascript"> 
        function delete()
        {
            if (confirm('Ask navigation confirm'))
            {
                window.navigate("bla bla new view url");
            }
            else
            {
                return;
            }
        }
</script>

編集:関数の名前を変更し、元のコードの実際の名前に置き換えます。

4

1 に答える 1

1

OK、 <%@ include file="script.js" %> はうまく機能し、script.js のコードをページに配置します。今、それは正しく動作します!関数名を「delete()」から「fdelete()」に変更しましたが、「delete」という名前が問題を引き起こす可能性があるようです。これは、JavaScript をページに直接記述しようとしたためだと思います (非常に単純な"delete()" 関数名でスクリプトが実行されませんでした! 理由はわかりませんが、そこにあります。

編集: 長年の Web 開発の後、私はこの質問に再び踏み込みました。もちろん、「delete」という名前の関数は機能しません。「delete」は JavaScript の予約語だからです!

JavaScript 神よ、私の罪をお許しください。私は若くて経験が浅かったのです :(

于 2012-06-29T09:07:10.120 に答える