使用javascript:FF vs IE禁用按钮

时间:2008-11-28 23:52:40

标签: javascript html internet-explorer

我有一排按钮,它们都创建了一个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 个答案:

答案 0 :(得分:8)

很简单:禁用的提交按钮不会在IE中提交表单。考虑重构您的代码:

  • 使用常规按钮,禁用它,并从其处理程序调用form.submit()。
  • 不要在“onclick”中禁用该按钮,而是将其保存,并在表单的onsubmit中执行。

答案 1 :(得分:5)

这样做更容易:

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

我不知道这是否能解决你的问题,但这就是我在这样的情况下会做的事情。无论如何,我认为你不需要“javascript:”。

答案 2 :(得分:3)

您可以尝试使用普通按钮并在onclick事件中触发表单submit()函数:

<input type="button" value="Factureren" name="submitbutton" 
onclick="this.disabled=true; this.className='button_disabled'; this.form.submit();">

答案 3 :(得分:0)

也许尝试将处理程序附加到表单的onsubmit事件而不是单击按钮?如果用户按下ENTER而不是单击按钮,那么这也可以工作。

答案 4 :(得分:0)

为什么不控制实际的提交按钮而不是控制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)

答案 5 :(得分:0)

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

您可以使用代替 document.getElementById('%s')。此外,您需要返回 true 才能传递onclick事件。

您还可以在表单的onsubmit处理程序中禁用该按钮。这可能更加万无一失。

另外,如果你没有特别使用类来禁用按钮,那就太好了。 CSS选择器旨在为您选择禁用的按钮。

答案 6 :(得分:0)

看看这部分:

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操作。

此外,尝试告诉表单提交。我认为这是正确的:

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

答案 7 :(得分:0)

onclick =“this.disabled ='disabled'; this.form.submit();”对我来说很完美