考虑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
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top