Двойной всплывающий щелчок IE8

#javascript

#javascript

Вопрос:

У меня есть следующий код

 <script>

    function Results()
    {
        document.report_form.action = "index.php?p=report_view";
        document.report_form.target = "_blank";    
        document.report_form.submit();             
        return true;
    }

    function CSV()
    {
        document.report_form.action = "csv.php";
        document.report_form.target = "_blank";    
        document.report_form.submit();             
        return true;
    }

</script>

<form name='report_form' method='post'>

    <input type='submit' name='view_table'  value='Display' onclick="return Results();">
    <input type='submit' name='view_csv'    value='Export CSV'        onclick="return CSV();">

</form>
  

При использовании Firefox или Chrome двойное всплывающее окно не запускается, при использовании IE8 пользователи нажимают один раз на кнопку, и появляется либо 2 всплывающих окна, либо 2 запроса на загрузку.

Я не мог найти решение этой проблемы, не могли бы вы показать мне, где я ошибаюсь?

Спасибо

Комментарии:

1. Я подозреваю, что этот код document.report_form.target = "_blank"; document.report_form.submit(); при нажатии должен открыть новое окно с отчетом.

2. Вы отправляете форму дважды: просто удалите document.report_form.submit(); строки.

3. вы правы теневой мастер, большое спасибо

Ответ №1:

Попробуйте вернуть false; вместо возврата true;

Комментарии:

1. Если вы не объясните и не дадите более подробной информации, это должен быть комментарий — ожидается, что ответ будет содержать больше деталей.

2. @ShadowWizard — Обычно я бы согласился, что лучше больше деталей, но в данном случае я думаю, что довольно очевидно, что в этом ответе говорится, что два места в коротком коде вопроса, которые есть return true; , должны быть изменены на return false; . (Учитывая этот пример кода, я не могу придумать никакой другой интерпретации.) Не то чтобы было бы неплохо узнать, почему это все исправит, но этой информации достаточно, чтобы заставить код работать…

3. @nnn справедливо, ответ может решить вопрос, но добавление деталей, объясняющих, почему он решается, также сделало бы его хорошим ответом, а не просто обычным тривиальным ответом. Кто-то предложил полностью изменить этот ответ час назад, чтобы сделать его таким, каким он должен был быть с самого начала, но я проголосовал за его отклонение — автор ответа не достоин баллов, присужденных в результате чужой работы.