0

我看过很多关于这个问题的帖子,但没有一个解决方案有效。以下..

<script type="text/javascript">

$(document).ready(function() {
  $("a.login_linkedinbutton").click(function(){
    $("#signup-form").submit();
    return false;
  });
});

</script>

是我在页面的正文标签中的内容。正文中还有表单,它在 IE 中的 html 显示如下..

<form accept-charset="UTF-8" action="/auth/linkedin" class="well form-inline" id="signup-form" method="post">
  <a class="login_linkedinbutton" href="#">Login using Linkedin</a>
</form>  

在 IE8 中,单击表单中的链接时,不会触发 jquery。它适用于 Chrome 和 Firefox。我试过了:

1) 使用 live 事件绑定点击动作 2) 将 jquery 移出页面并放入 rails assets

有什么想法可以尝试吗?

4

1 回答 1

5

使用<input type="submit" value="Login using Linkedin"> 为什么要通过使用非标准元素然后尝试从中恢复来制造问题?

如果你想让它看起来像一个链接,只需设置按钮的样式。但为什么要这样做?建议用户在提交表单时转到另一个页面是很差的用户体验。大多数用户在填写表格时避免单击链接,因为他们害怕丢失刚刚输入的内容。

如果你坚持使用该链接,你可以试试这个:

var onLinkedInLogin = function(e){
    e.preventDefault(); // stops the link processing
    $("#signup-form").submit();
    // add return false; if you want to stop event propagation also
    // equivalent to calling both, e.preventDefault() and e.stopPropagation().
};

$(document).on('click', 'a.login_linkedinbutton', onLinkedInLogin);

我建议使用.on()on的原因.click()是我猜在 IE 上,a.login_linkedinbutton当您调用.click().

于 2013-02-28T22:21:21.387 回答