Отключение кнопки с помощью JavaScript: FF против IE - PullRequest
3 голосов
/ 29 ноября 2008

У меня есть ряд кнопок, которые все создают файл PDF, который я хочу открыть в новой вкладке. Таким образом, страница кнопки остается сверху, и PDF-файл открыт для печати. Чтобы не нажимать кнопку дважды, я отключаю ее, например, так (я использую python):

<input type='submit' value='Factureren' name='submitbutton' id='%s'
onclick="javascript:document.getElementById('%s').disabled=true; 
document.getElementById('%s').className='button_disabled';"> % ((but_id,) *3)

В FF3 это работает нормально, то есть форма отправляется, скрипт выполняется, а затем кнопка отключается. В IE кнопка просто отключается, но скрипт формы не выполняется.

Есть ли решение этой проблемы IE?

Ответы [ 8 ]

8 голосов
/ 29 ноября 2008

Это просто: отключенная кнопка отправки не отправляет форму в IE. Подумайте о реструктуризации вашего кода:

  • Используйте обычную кнопку, отключите ее и вызовите form.submit () из ее обработчика.
  • Не отключайте кнопку в «onclick», а сохраняйте ее и делайте это при отправке формы.
5 голосов
/ 29 ноября 2008

Это проще сделать:

    <input type='submit' value='Factureren' name='submitbutton' id='%s' 
onclick="this.disabled=true; this.className='button_disabled';"> % ((but_id,) *3)

Я не знаю, решит ли это вашу проблему, но именно так я и поступил бы в таком случае. Я думаю, что вам не нужно "javascript:" в любом случае.

3 голосов
/ 29 ноября 2008

Вы можете попробовать использовать обычную кнопку и вызвать функцию submit () формы в событии onclick:

<input type="button" value="Factureren" name="submitbutton" 
onclick="this.disabled=true; this.className='button_disabled'; this.form.submit();">
0 голосов
/ 16 декабря 2010

onclick = "this.disabled = 'disabled'; this.form.submit ();" у меня отлично работает

0 голосов
/ 29 ноября 2008

Посмотрите на эту часть:

onclick="javascript:document.getElementById('%s').disabled=true; 
document.getElementById('%s').className='button_disabled';"

«javascript:» не нужен и неправильный.

onclick="document.getElementById('%s').disabled=true; 
document.getElementById('%s').className='button_disabled';"

"javascript:" - это URL-адрес протокола, используемый в ссылках, а не в действиях по нажатию.

Кроме того, попробуйте указать форму для отправки. Я думаю это было бы правильно:

onclick="document.getElementById('%s').disabled=true; 
document.getElementById('%s').className='button_disabled';
this.form.submit();"
0 голосов
/ 29 ноября 2008
<input type="submit" value="Factureren" name="submitbutton' id="%s"
onclick="this.disabled = true; this.className = 'button_disabled'; true;">
% ((but_id,) *3)

Вы можете использовать this вместо document.getElementById ('% s') . Кроме того, вам нужно вернуть true , чтобы событие onclick прошло.

Вы также можете отключить кнопку в обработчике отправки для формы. Это, вероятно, более надежно.

Также было бы неплохо, если бы вы не использовали класс специально для отключенной кнопки. Селекторы CSS предназначены для выбора отключенных кнопок.

0 голосов
/ 29 ноября 2008

Вместо того, чтобы управлять div, почему бы не контролировать фактическую кнопку отправки? Это работает универсально во всех протестированных мною браузерах (IE6 + FF1 + и Safari)

function toggleSubmit(){  
    frm=document.forms[0]
    if(frm.submit.disabled==true){
        frm.submit.disabled=false;
    }else{
       frm.submit.disabled=true;
    }
 }

Тогда на кнопке все, что вам нужно для вызова, это

<input type='submit' value='Factureren' name='submitbutton'
onclick="toggleSubmit();false;"> % ((but_id,) *3)
0 голосов
/ 29 ноября 2008

Может быть попытаться прикрепить обработчик к событию onsubmit формы вместо нажатия кнопки? Это также будет работать, если пользователь нажмет ENTER вместо того, чтобы нажимать вашу кнопку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...