2011-01-11 2 views
1

У меня есть этот фрагмент кода:JQuery и IE не играет хороший

function createDownload() { 
     var category, format, specification, download; 

     $('#submitform').click(function() { 
      category = $('#cate').val(); 
      format = $('#form').val(); 
      specification = $('#spec').val(); 

      if (category == "NULL" || format == "NULL" || specification == "NULL") { 
       alert("Please select all options."); 
       return false; 
      } else { 
       download = "pdfs/"+specification+format+category+".pdf"; 
       window.open(download); 
      } 
     }); 
    } 

Теперь ... В Internet Explorer это говорит, что это «Ошибка на странице» - Message: 'return' statement outside of function и я должен нажать кнопку еще раз.

В Firefox, Chrome и Safari - я должен нажать кнопку дважды, чтобы получить не появится PDF ... (и без ошибок) ...

Теперь, почему это может быть ?!

По желанию - Моя форма декларации: <form method="post" action="javascript: return false;" onSubmit="createDownload();">

+4

Проблемы с IE ... Где я слышал, что до? –

+0

может не касаться вас, а выставлять свой код, который вызывает функцию 'createDownload'. – Ross

+0

- это вызов 'createDownload()'? Событие 'click' не будет связано до вызова' createDownload'. Также вы могли бы дать более подробное заявление об ошибке из IE? Какая версия IE? У вас есть инструменты для разработчиков IE (IE8 +)? На какой строке находится это утверждение? – clarkf

ответ

1

Вам необходимо изменить action='javascript: return false;' и удалить onsubmit. Он должен стать action='javascript: createDownload();'

+0

Кровавый ад, «глупость» должна быть на моем C.V –

0

Попробуйте удалить возвращение. Кажется, вам это даже не нужно, и если это действительно причина проблемы, то в чем ее смысл?

2
<form method="post" action="javascript: return false;" onSubmit="createDownload();"> 

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

Что-то вроде

<form method="post" action="javascript: function() {return false;}" onSubmit="createDownload();"> 

будет работать

Лучше связать событие .submit() для формы

<form method="post" id="frm1"></form> 

$("#frm1").submit(function(){ 
    // your code 
    return false; 
}); 
0

Во-первых, вам нужно удалить action из формы - это служит никакой цели здесь. Кроме того, если #submitForm ссылается на кнопку отправки формы, ваш первый клик будет прикреплять обработчик кликов, а второй щелчок на самом деле вызовет его. Вместо этого удалите onsubmit атрибут и просто прикрепить обработчик обычным способом либо нажатием кнопки или формы представить событие, будучи уверенным, чтобы отменить событие в любом случае:

jQuery(function($) { 
    $('#submitform').click(function() { 
    // or: $('#formID').submit(function() { 
     var category, format, specification, download; 

     category = $('#cate').val(); 
     format = $('#form').val(); 
     specification = $('#spec').val(); 

     if (category == "NULL" || format == "NULL" || specification == "NULL") { 
      alert("Please select all options."); 
     } else { 
      download = "pdfs/"+specification+format+category+".pdf"; 
      window.open(download); 
     } 

     return false; 
    }); 
}); 
Смежные вопросы