簡體   English   中英

在JSP中嵌入JavaScript代碼不會調用JS函數

[英]Embedding JavaScript code in JSP won't call the JS function

給出以下代碼:

<%@ page language="java" 
    contentType="text/html; charset=windows-1256"
    pageEncoding="windows-1256"
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head><title>Bank application</title>
<link rel="stylesheet"
      href="./css/styles.css"
      type="text/css"/>
</head>

<body>
<table class="title">
  <tr><th>Web Bank application</th></tr>
</table>
<br/>


<script>

function verifyEmptyString()
{
  var username = document.forms["loginForm"]["username"].value;
  var password = document.forms["loginForm"]["password"].value;

  return !(username == null || username == "" || password == null || password == "");
}     
</script>


<fieldset>
  <legend>Login Page - please enter your Username and Password</legend>

  <form id="loginForm" action="loginPage" onsubmit="verifyEmptyString()" > 

    <p style="font-size:15px">  <span style="color:red;font-weight:bold;">*</span> Username: <input type="text" name="username"><br> </p>
    <p style="font-size:15px"><span style="color:red;font-weight:bold;">*</span>  Password : <input type="password" name="password"><br> </p>
    <input type="submit" value="Login">
  </form>
</fieldset>

<br/>
<br/>
<br/>
<br/>
<br/><br/><br/><br/><br/><br/>

</body></html>

我正在嘗試調用JS函數verifyEmptyString() ,但JSP不會調用該函數。

知道代碼有什么問題嗎?

正在調用該函數(我添加了一個警告來驗證)。 但是你想在onc​​lick事件中返回函數的值:

<form id="loginForm" action="loginPage" onsubmit="return verifyEmptyString(this)" > 

嘗試這樣的事情: http//jsfiddle.net/daguru/RBYnc/1/

var myForm = document.getElementById('loginForm');

myForm.addEventListener("submit", function(ev) {
    ev.preventDefault(); // to stop the form from submitting
    var username = document.forms["loginForm"]["username"].value;
    var password = document.forms["loginForm"]["password"].value;

    if(!(username == null || username == "" || password == null || password == "")){
        this.submit(); // If all the validations succeeded
        alert("submiting")
    }         
});

這是解決方案:

<form onsubmit="return verifyEmptyString(this)" id="loginForm" action="loginPage"  >

對於將來可能遇到此問題的任何人,您需要更改onsubmit ...

由此 :

onsubmit="verifyEmptyString()"

對此:

onsubmit="return verifyEmptyString(this)"

我不太明白為什么我們需要將this作為參數傳遞給函數,因為在實際的函數定義function verifyEmptyString()不接受它。 您直接引用函數內的表單元素。

另一方面,如果您的代碼類似於以下場景,

<!DOCTYPE html>
<html>
<head>
<script>
    function validateForm(obj) {
        var x = obj["firstname"].value;
        alert(x);
        if (x == null || x == "") {
            alert("First name must be filled out");
            return false;
        }
    }
</script>
</head>

<body>
    <form name="myForm" action="action.jsp"
        onsubmit="return validateForm(this)" method="post">
        First name: <input type="text" name="firstname"> <input
            type="submit" value="Submit">
    </form>
</body>

</html>

在這種情況下,我們正在使用傳遞的參數this 它引用當前上下文,在我們的例子中,它是名稱為myFormform

但在您的原始場景中,您通過調用document.forms["loginForm"]["username"].value直接引用javascript函數內的表單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM