Javascript菜单选择变化预防onsubmit事件在HTML的形式?
-
20-08-2019 - |
题
考虑HTML形式:
<form action="" method="POST" onsubmit="return checkValidArray()">
<input type="text" name="data" onchange="return validate(this);">
</form>
它的出现(在两即6和Firefox3)就当输入一些文字输入领域,并点击提交的菜单选择变化的火灾,用于输入域,但onsubmit事件不火的形式直到你击提交按钮的第二时间(在这段时间的菜单选择变化不火,当然)。换句话说,菜单选择变化似乎防止onsubmit从射击。
希望是检查每个领域中的形式时,用户出口领域,以便向他们提供立即验证反馈,并且还可以防止提交的形式,如果没有无效数据。
[编辑:注意到,验证功能包含一个警报().]
一个人如何解决这个问题?
解决方案
解决方案(排序):
事实证明,它是唯一存在的警报()-或确认()-在输入的菜单选择变化,导致形式的onsubmit事件不火。JS线似乎得到阻止通过警报().
解决方法是不包括任何警报()或确认()输入的菜单选择变化的呼吁。
浏览器的已知的影响:
IE6-Windows
IE8赢
FF3赢
浏览器的已知的不要影响:
谷歌铬赢
野生动物园-Mac
FF-Mac
其他提示
我试图用火狐3(Mac)与下列代码:
<html>
<head>
<script>
function validate(ele)
{
alert("vali");
return false;
}
function checkValidArray()
{
alert("checkValidArray");
}
</script>
</head>
<body>
<form action="" method="POST" onsubmit="return checkValidArray()">
<input type="text" name="data" onchange="return validate(this);">
<input type="submit" value="Ok">
</form>
</body>
</html>
它似乎工作。当我点击"确定"的按钮,"瓦利"和"有效的检查阵列"。起初我以为 return false
可能是因为什么形式没有提交,但是提交的(至少, checkValidArray()
被称为).
现在,你在做什么在你 checkValidArray()
和 validate()
方法?一些特别的东西吗?你可以发布的代码?
编辑:我测试了与IE8和FF3上窗,并在这两个事件没有得到解雇。我不知道为什么。也许onblur是一个解决方案,但为什么菜单选择变化不工作吗?是否有具体的原因或是它只是另一个不一致?(同时在FF和野生动物在Mac)
你可以使用的onblur事件在您的投入,而不是菜单选择变化.
这是相当有趣的行为是不同的Mac,所以它的出现依赖于平台和不浏览器的依赖。必须是一个线索那里的某个地方...
我试图onblur与家素食'代码,但有相同的结果作为与菜单选择变化(只有"瓦利"警惕).
是什么让一个差别是无论你做 任何东西 在validate().评论了线警报("瓦利");和它的工作!(实际返回值从validate()没有关系,虽然我不会希望它。)
编辑:一个同事刚刚试过这个在谷歌浏览器上的窗户和它在那里工作。这种直觉意义,因为铬分JS线。
一些关于第一个警报()阻断线引起的onsubmit事件丢失。可能比赛的条件?
不创造;提交按钮。相反,创建一个正常的按钮,并编写一个功能,它可被称为击有那个按钮。
功能会做证的形式领域,如果一切都很好,它将提交形式。否则它不会。
function validate
{
"Piece of code to Validate your form"
document.formName.action.value = "URL which you want to call"
document.propFile.submit(); // It will submit he page
}