2015-12-21 160 views
-4

我有一段Html,我有用户点击一个链接(删除),然后页面显示'确认删除'按钮。当点击确认删除按钮时,JavaScript执行Ajax调用来执行删除操作。这在Chrome中非常适用,但不适用于Internet Explorer(v11)。为什么Javascript在IE中不起作用

在Chrome中调试时,我可以看到调用的JavaScript,但不能在Internet Explorer中看到。

该应用程序是MVP。这是渲染HTML:

<td> 
    <a href="/project/edit">Edit</a> | 
    <a href="/project/details">Details</a> | 
    <a class="delete-link" href="javascript:void(0);">Delete</a> 
    <div class="btn btn-primary delete-confirm" style="display: none;" data-delete-action="_submissionfiledelete" data-delete-controller="project" data-delete-id="b59fa83e-14a8-e511-8172-00215e466552">Confirm Delete</div> 
</td> 

而这里的JavaScript的:

$(function() { 

    $(Document).on("click",".delete-link",function (event) { 
     var deleteLink = $(this); 
     deleteLink.hide(); 
     var confirmButton = deleteLink.siblings(".delete-confirm"); 
     confirmButton.show(); 

     var cancelDelete = function() { 
      removeEvents(); 
      showDeleteLink(); 
     }; 

     var deleteItem = function() { 
      removeEvents(); 
      confirmButton.hide(); 
      var url = '/' + confirmButton.attr('data-delete-controller') + '/' + confirmButton.attr('data-delete-action') + '/' + confirmButton.attr('data-delete-id'); 
      $.post(
       url, 
       AddAntiForgeryToken({ id: confirmButton.attr('data-delete-id') })) 
       .done(function() { 
        var parentRow = deleteLink.closest(".removable-row"); //"tr:first, li:first"); 
        parentRow.fadeOut('fast', function() { 
         parentRow.remove(); 
        }); 
       }).fail(function (data) { 
        var bpData = data; 
       }); 
      return false; 
     }; 

     var removeEvents = function() { 
      confirmButton.off("click", deleteItem); 
      $(document).on("click", cancelDelete); 
      $(document).off("keypress", onKeyPress); 
     }; 

     var showDeleteLink = function() { 
      confirmButton.hide(); 
      deleteLink.show(); 
     }; 

     var onKeyPress = function (e) { 
      //Cancel if escape key pressed 
      if (e.which == 27) { 
       cancelDelete(); 
      } 
     }; 

     confirmButton.on("click", deleteItem); 
     $(document).on("click", cancelDelete); 
     $(document).on("keypress", onKeyPress); 

     return false; 
    }); 

    AddAntiForgeryToken = function (data) { 
     data.__RequestVerificationToken = $('input[name=__RequestVerificationToken]').val(); 
     return data; 
    }; 
}); 
+3

尝试'$(文件)''而不是$(文档)'。一般来说JS是区分大小写的。 – Sirko

+0

对上述代码进行一些小调试,并在您的问题中提供结果。 –

+1

[在href ie 11中使用js时出错]可能的重复(http://stackoverflow.com/questions/23077303/error-when-using-js-in-href-ie-11) –

回答

1

无效将覆盖onclick事件在IE

改变这一行:

<a class="delete-link" href="javascript:void(0);">Delete</a> 

本:

<a class="delete-link" href="#">Delete</a> 

你可以尝试强制EDGE模式:

<meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
+0

只要确保知道作者:http://stackoverflow.com/questions/134845/href-attribute-for-javascript-links-or-javascriptvoid0 –

相关问题