Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在提交和调用servlet之前调用javascript验证函数_Java_Javascript_Servlets - Fatal编程技术网

在提交和调用servlet之前调用javascript验证函数

在提交和调用servlet之前调用javascript验证函数,java,javascript,servlets,Java,Javascript,Servlets,我试图验证表单,然后调用servlet,结果失败,因为表单无效。我在下面粘贴了一些代码。你能在这个问题上给我一些提示和帮助吗 函数validateForm() { if(document.frm.username.value==“”) { 警报(“用户名不能为空”); document.frm.username.focus(); 返回false; } else if(document.frm.pwd.value==“”) { 警报(“密码不能为空”); document.frm.passwor

我试图验证表单,然后调用servlet,结果失败,因为表单无效。我在下面粘贴了一些代码。你能在这个问题上给我一些提示和帮助吗

函数validateForm()
{
if(document.frm.username.value==“”)
{
警报(“用户名不能为空”);
document.frm.username.focus();
返回false;
}
else if(document.frm.pwd.value==“”)
{
警报(“密码不能为空”);
document.frm.password.focus();
返回false;
}
}

登录示例
输入用户名:
输入密码:


您正在使用
document.frm
引用您的表单,但您的表单名称是
loginform
,而不是
frm
。因此,如果要依赖自动创建的
文档
属性,则需要
document.loginform

我宁愿不依赖他们。相反,您可以将表单引用传递到验证函数:


…然后在函数中使用参数:

函数验证窗体(frm)
{
如果(frm.username.value==“”)
{
警报(“用户名不能为空”);
frm.username.focus();
返回false;
}
else if(frm.pwd.value==“”)
{
警报(“密码不能为空”);
frm.password.focus();
返回false;
}
}
(当然,我仍然依赖于自动属性,在这里是表单对象。如果我真的想避免它们,我可以使用
frm.querySelector(“[name=username]”)作为用户名字段和
frm.querySelector(“[name=password]”)作为用户名字段)
用于密码字段。所有现代浏览器和IE8都有
querySelector
。但至少只依赖表单上的选项比担心文档中的所有内容要复杂一些

这是您的表单和上面的代码片段,修改了操作以将您带到google.com(修改了方法以获取;这两个mod都只是用于演示):使用空白用户名或密码尝试,您会注意到表单不会提交:

函数验证窗体(frm)
{
如果(frm.username.value==“”)
{
警报(“用户名不能为空”);
frm.username.focus();
返回false;
}
else if(frm.pwd.value==“”)
{
警报(“密码不能为空”);
frm.password.focus();
返回false;
}
}

输入用户名:
输入密码:


如下更改javascript函数

function validateForm(event)
{
    event.preventDefault(); // this will prevent the submit event.
    if(document.loginform.username.value=="")
    {
      alert("User Name can not be left blank");
      document.loginform.username.focus();
      return false;
    }
    else if(document.loginform.password.value=="")
    {
      alert("Password can not be left blank");
      document.loginform.password.focus();
      return false;
    }
    else {
        document.loginform.submit();// fire submit event
    }
}
另外,在函数调用中传递submit事件,如下所示

<form name="loginform" action="login" method="post" onSubmit="return validateForm(event);">

Crowder提供的方法很好,但如果验证失败,您可能还必须处理触发的提交事件


即将给出同样的答案。但是现在我不想重复这个答案。他用错误的方式调用他的表单。好,catchT.J。克劳德非常感谢你的帮助!这几乎是我想要的,但还有一个问题需要解决。当我将用户名留空时,我会收到一条消息,所以它正在验证,但在这之后,将调用留空用户名文本框servlet。你能帮我个忙吗?@user3607625:不应该,你展示的代码不应该。我添加了一个片段来演示。仍然是相同的问题。验证后,它会将我重定向到servlet。你检查过小提琴了吗?这很有效!阻止提交通过允许您在提交之前验证servlet驱动的表单来提供价值。提交后,servlet将通过RequestDispatcher重定向uri,您无法控制验证then@rnyunja,您是对的,这就是为什么preventDefault很有用,并且只有在清除客户端验证时才提交表单。但我们不应该完全依赖于客户端验证