jquery点击没有在IE上触发

时间:2013-02-28 22:14:53

标签: javascript jquery

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

<script type="text/javascript">

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

</script>

是我在页面的body标签中的内容。身体也是形式,在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)使用直播事件绑定点击操作 2)将jquery移出页面并进入rails资产

还有什么想法可以尝试吗?

1 个答案:

答案 0 :(得分: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()上使用.click()的原因是我想在IE上,当您调用{{1}时,a.login_linkedinbutton在DOM中不存在}。