jQuery submit не работает в Opera

у меня есть простая форма, которая может быть отправлена вне элемента через небольшой скрипт 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.

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

Edit: я также использую jQuery UI framework для обработки некоторых материалов и взаимодействий

3 ответов


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


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

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

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

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


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

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

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

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

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