【问题标题】:Form submit in IE11 doesn't work correctlyIE11 中的表单提交无法正常工作
【发布时间】:2017-04-24 02:17:37
【问题描述】:

我在 IE 11 中遇到了表单 onsubmit 函数的问题。 当提交按钮被触发时,“doSomething()”函数将被调用。在“doSomething()”函数中,我调用了另一个函数来进行一些输入验证。此函数始终返回 false,但如果所有验证错误都消失了,则将标志设置为 true。如果标志设置为真,“doSomething()”函数返回真,表单将被提交并调用动作。此模式适用于 Firefox、Chrome 和 Safari,但不适用于 IE11。在 IE 中,它在“doSomeValidation()”函数准备好之前调用该操作。 :-/ 有人可以帮我吗?非常感谢!!!

<form action="headToNextPage.php" onsubmit="return doSomething()">

js

flag = false, // a global flag inside the js-script

function doSomeValidation(){
// validate the inputs and set "flag" to true if all errors are gone
}

function doSomething(){
   doSomeValidation(); // do the validation stuff

   if(flag==true) {
   // do some other stuff
     return true
   }

   return false;
}

【问题讨论】:

  • 试试console.log(window.flag,flag)你在哪里使用它,看看你是否得到你的想法。还返回标志而不是真或假:function doSomething(){ doSomeValidation(); return flag;}
  • 不能用一点html5约束验证吗?几乎不需要js...能不能给我们看完整的html表单?
  • 可能是 doSomeValidation 中的一些异步调用
  • 不幸的是,我无法向您展示整个表单,因为它与工作相关......这就是为什么我需要使用 IE 的原因,因为它是公司的标准浏览器。 -_- 我需要一个自定义验证,显示 css 样式的消息和图标以及其他东西,这就是我这样做的原因(使用 JS)...
  • @Mahi ...你的意思是“承诺”?

标签: javascript html forms internet-explorer onsubmit


【解决方案1】:

将 false 后的逗号替换为分号,并在其在 IE11 中工作的 dosomething 方法中添加一些警告 flag = false;

【讨论】:

  • 对不起,通常有一个分号...我在我的帖子中输入错误
  • 你尝试过警报吗
  • 是的,我做到了...调用 doSomeValidation() 函数后的所有警报都不会被调用
  • 这里没有,因为我目前不在工作。我明天可以做
  • 按F12键检查是否有调试错误,并验证是否有代码被中间阻塞。
【解决方案2】:

我解决了。问题是,我在 jQuery $( document ).ready(..) 函数内部的一个字符串上调用了 JS .startsWith(..) 函数。 Chrome、Firefox 和 Safari 忽略了它,但 IE 对它发疯了,但没有显示任何错误。我取而代之的是 .indexOf(..) 函数,它起作用了。感谢大家在这里帮助我!

【讨论】:

    猜你喜欢
    • 2014-01-23
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多