【问题标题】:Why does `onclick()` get called before form submission?为什么在提交表单之前会调用`onclick()`?
【发布时间】:2013-06-04 13:40:12
【问题描述】:

我有一个通过submit 按钮提交的表单。单击它时,它会执行 java 脚本验证并在文本框下显示错误字段。因此,如果有错误,控件将返回到同一页面。我的问题是,在表单发布后,我不断看到两个错误字段,我需要删除一个并只保留一个。

为此,我从提交按钮调用了一个点击函数,我试图找出错误 div id 是否存在如下:

<input type="image" name="submit" onclick = 'checkErrors()'>

现在在checkErrors() 方法中:

function checkErrors(){
var errorElem1 = document.getElementById('errField1');
var errorElem2 = document.getElementById('errField2');
if((errorElem1 != null) && (errorElem2 != null)){
alert("Two error fields.");
errorElem2.style.display='none';
}
}

现在,我在这里找不到警报,一旦我点击按钮。

所以我删除了 if 条件并将其保留为:

 function checkErrors(){
var errorElem1 = document.getElementById('errField1');
var errorElem2 = document.getElementById('errField2');
errorElem2.style.display='none';
}
} 

现在,我在 firebug 控制台中看到错误:elem2 is null。这意味着 onclick 正在执行,然后只发生表单发布,因此在 onclick 后永远找不到 elem2

表单提交为:

&lt;form name="IntitalJspPage" method="post" action="Controller" onsubmit="validate(this); return false;"&gt;

现在我可以在这里做什么来在提交表单并且在页面上呈现错误字段后调用 onclick?

【问题讨论】:

  • 并非如此,实际上会发生异步 ajax 验证,如果出现错误,则同一页面会在错误字段中加载错误。所以基本上在提交表单时,同一个页面会加载 ajax 后验证。
  • 异步ajax验证?那是什么,它在您提供的代码中的什么位置?
  • 问题不在于ajax validation。更重要的是,在提交表单并在同一页面中加载内容后,我是否可以调用onclick
  • 查看我的更新答案
  • @MaVRoSCy 让我看看。我会尽快回复您 。谢谢。

标签: javascript forms jsp post onclick


【解决方案1】:

您使用图像作为输入类型。输入类型没有图像类型。而不是使用 type="button"。改为在validate 方法中调用提交表单。

【讨论】:

  • @TheDarkKnight 我认为您可以通过使用 ajax 调用更好地处理此类事情。创建ajax调用。单击按钮/图像调用 ajax 方法。然后在调用完成后提交。调用错误方法。
  • 你能给我指出任何有这样一段代码的互联网资源吗?理解和实施它对我很有用。
  • Refer stackoverflow.com/questions/8567114/… onreadystatechange 是响应返回时将调用的方法。所以在那里调用错误方法调用。
【解决方案2】:

当表单提交结束时,基本上你会刷新页面。所以DOM是从头开始重构的。您在提交操作之前初始化的任何 javascript 变量现在都将被重置。

做你想做的事很简单。你可以这样做

<input id="mysubmit" type="image" name="submit" onclick = 'checkErrors()'>

方法一(纯javascript):

<body onload="document.getElementById('mysubmit').click(); return false;">

方法2(JQuery):

$( document ).ready(function() {
    $('#mysubmit').click();
});

【讨论】:

  • 这个img 标签是干什么用的?无论如何,问题是我收到两个错误文件,我打算在表格发布后避免。因此,您的带有“if”条件的代码是多余的,因为我确实希望在提交表单之后而不是在那之前得到错误。
  • 你的意思是当DOM加载时你想用name="submit"点击输入?
  • 我的意思是,表单提交结束后,我才希望调用onclick方法。
猜你喜欢
  • 2013-07-21
  • 1970-01-01
  • 2018-06-10
  • 2020-08-27
  • 1970-01-01
  • 1970-01-01
  • 2014-04-17
  • 2019-07-29
  • 2015-08-19
相关资源
最近更新 更多