使用JavaScript禁用按钮:Firefox与IE的差异

4

我有一排按钮,它们都可以创建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)

在Firefox 3中,这个功能很好用,也就是说,表单被提交,脚本执行,然后按钮被禁用。但在IE中,只有按钮被禁用,表单脚本没有被执行。

有没有解决这个IE问题的方法?

8个回答

8

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

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

5

更容易做到:

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

我不知道这是否解决了你的问题,但在这种情况下,这是我会做的。我认为你根本不需要使用“javascript:”。


实际上,“javascript:”是仅用于链接的URL“协议”。 - Ivan Vučica
"JavaScript"甚至不是一个合适的协议,它只是一个伪协议。 - John Topley

3
您可以尝试使用常规按钮,并在onclick事件中触发表单submit()函数:
<input type="button" value="Factureren" name="submitbutton" 
onclick="this.disabled=true; this.className='button_disabled'; this.form.submit();">

0

onclick="this.disabled='disabled'; this.form.submit();" 对我来说运行得很完美


0
也许尝试将处理程序附加到表单的onsubmit事件上,而不是按钮的点击事件?这样,如果用户按下ENTER键而不是点击按钮,也能起作用。

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)

0
<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事件。

你也可以在表单的onsubmit处理程序中禁用按钮。这可能更加傻瓜式。

另外,如果你不使用类来专门表示禁用的按钮,那就更好了。CSS选择器是为了方便你选择禁用的按钮而设计的。


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();"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接