2013-02-28 3 views
0

Я видел много сообщений по этой проблеме, но ни одно из решений не работало. Следующие ..jquery click not get trigger on IE

<script type="text/javascript"> 

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

</script> 

- это то, что у меня есть в теге тела страницы. Кроме того, в теле есть форма, HTML, из которых в IE показывает вверх, как это ..

<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 из страницы и в рельсам активов

Любые идеи, что еще попробовать?

+0

Хотя ужасно, вы пробовали 'href =" javascript: $ ('# signup-form'). Submit(); return false; "'? – mattytommo

+2

как насчет того, чтобы просто сменить якорь на кнопку отправки? – adeneo

+1

Вы пытались вставить 'javascript: void (0);" 'в свой href вместо использования «#»? – talemyn

ответ

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, то a.login_linkedinbutton нет в DOM когда вы вызываете .click().

+0

Я согласен с @BLSully. , , вы делаете предположение, что он может изменить его. Существует много причин, по которым он может быть неспособен (например, стандарты или требования для проекта). Лучше спросить, может ли он внести изменения, чем предположить. – talemyn

+0

@BLSully: Напротив: иногда самый правильный ответ - «не делай этого». : P – cHao

+0

Спасибо, ребята, за вашу помощь. – absolutskyy