JQuery отправить не работает в Opera - PullRequest
6 голосов
/ 21 апреля 2011

У меня есть простая форма, которую можно отправить за пределы элемента с помощью небольшого скрипта jQuery.

<script type="text/javascript">
    $(document).ready(function() {
        $('#mybutton').click(function(){
            $('#myform').attr('action', '/url/to/form').submit();
        });
    });
</script>

Кнопка просто нормальная ссылка

<a href="javascript:void(0);" id="mybutton">Just a normal link</a>

Форма просто нормальная форма

<form id="myform" action="/url/to/form">
    ....
    <input type="submit" value="Search">
</form>

Это прекрасно работает в IE, FF, Chrome и Safari, но не в Opera. В Opera он всегда перенаправляет на мою домашнюю страницу, а не на URL действия формы. Я попытался установить действие в сценарии (как описано выше) и обычно в параметре действия формы, но безуспешно. Я использую последний JQuery и Opera.

Пожалуйста, помогите

Редактировать: я также использую инфраструктуру пользовательского интерфейса jQuery для обработки некоторого содержимого и взаимодействий

Ответы [ 3 ]

1 голос
/ 21 апреля 2011

Первое, что я хотел бы сделать, это изменить обработчик, чтобы предотвратить действие по умолчанию для ссылки:

    $('#mybutton').click(function(ev){
        ev.preventDefault();
        $('#myform').attr('action', '/url/to/form').submit();
    });

Использование тегов <a> для кнопок означает, что вы должны быть осторожны, чтобы браузер незапутаться по поводу семантики.У меня нет большого опыта отладки вещей в Opera, но это первое, что я подозреваю.

Если с «кнопкой» не связано настоящее «href», я бы спросил, почему этоТег <a> на всех;это может быть просто <span>, к которому также может быть прикреплен обработчик щелчка, но у которого нет потенциально проблемного поведения.

0 голосов
/ 21 апреля 2011

Я полагаю, что это будет связано с незавершенным в настоящее время классом выбора jquery ui. Он добавляет тег с href, так как # я считаю, что это может быть вашей проблемой.

0 голосов
/ 21 апреля 2011

Попробуйте просто $('#myform').submit(); вместо $('#myform').attr('action', '/url/to/form').submit();

Редактировать: Как уже говорилось в другом ответе, вам сначала нужно позвонить event.preventDefault();, прежде чем что-либо делать с событием click, поскольку это не позволяет браузеру перенаправить вас.

Edit2: правильный код будет:

<script type="text/javascript">
$(document).ready(function() {
    $('#mybutton').click(function(event){
        event.preventDefault();
        $('#myform').attr('action', '/url/to/form').submit();
    });
});

Это должно работать нормально.

...