IE11提交无法识别的元素

时间:2019-04-26 09:27:47

标签: javascript jquery internet-explorer-11

首先,对于任何发现此帖子的人都微不足道的事情,我感到抱歉,但是我现在乍一看是发表问题。

我正在开发一个ASP.NET MVC 6应用程序,该应用程序可以在Chrome和Edge中完美运行,但是最近,我得知它还需要能够在IE11上运行。

我的问题是何时提交表单。

 $("#js-form").on("submit", function (e) {
     document.getElementById("DefinitionID-error").style.visibility = "hidden";
     document.getElementById("DefinitionID-error").textContent = "<some text>";
     document.getElementById("DefinitionID-error").style.visibility = "visible";
  }

该代码似乎在IE11调试器中执行,没有任何错误消息,但是在屏幕上,#DefinitionID-error中保存的原始文本没有更改。

我正在使用的IE11版本是Windows 10附带的超级特殊版本。

我尝试过的其他代码包括:

 $("#js-form").on("submit", function (e) {
     $("#DefinitionID-error").hide();
     $("#DefinitionID-error").text("<some text>");
     $("#DefinitionID-error").show();
 }

 $("#js-form").on("submit", function (e) {
     $("#DefinitionID-error").html("<span id='DefinitionID-error'>Some text</span>");
 }

 $("#js-form").on("submit", function (e) {
     document.querySelector("#DefinitionID-error").textContent = "<some text>";
 }

 $("#js-form").on("submit", function (e) {
     document.querySelector("#DefinitionID-error").innerHTML = "<span id='DefinitionID-error'>some text</span>";
 }

所有这些功能都可以在Chrome中正常运行,并且足够有趣,而在IE11中则不能。

示例也不起作用

 $("#js-form").on("submit", function (e) {    
     $("#DefinitionID-error").hide();
     $("#DefinitionID-error").text("Some text");
     $("#DefinitionID-error").show();
 }

更新

如果我使用jQuery代码或javascript代码并在IE11的调试器中运行它。它可以工作,所以可能与提交有关。

2 个答案:

答案 0 :(得分:0)

我在Windows 10,Internet Explorer 11上使用以下代码进行了测试。在IE 11上运行正常。

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
  $("#clk").click(function(){
   $("#js-form").submit();
   console.log(222); 
  });
  
  
   $("#js-form").on("submit", function (e) {  
   console.log("start");  
 
     $("#DefinitionID-error").hide();
     $("#DefinitionID-error").val("Some text");
     $("#DefinitionID-error").show();
	   alert("Form submitted");
 });
});
</script>
</head>
<body>



<button id="clk">Click me to submit form</button>


<form id="js-form">
  First name:<br>
  <input type="text" id="DefinitionID-error" name="DefinitionID-error" value="Mickey">
  <br>
  Last name:<br>
  <input type="text" name="lastname" value="Mouse">
  <br><br>
  <input type="submit" value="Submit">
</form> 


</body>
</html>

IE 11中的输出:

enter image description here

答案 1 :(得分:0)

谢谢大家的评论,感谢Deepak的代码解决方案。实际上,通过更多的测试,尽管我还没有确切发现问题所在,但是我现在意识到了与select2库有关的一些验证问题。

发生的情况是,当从我上面的代码运行提交代码时,select2库以某种方式用尽了顺序,导致提交发生了两次。第一个实际提交确实设置了正确的错误消息,但是第二个是正式形式的提交,并且该错误消息将恢复为系统默认消息,因此,出于所有强烈的目的,它看起来什么也没有发生。

这个故事的寓意,我猜不要再使用select2。