2010-03-17 70 views
3

除非启用JavaScript,否则我需要将按钮“提交”禁用。要启用“提交”按钮的JavaScript(不起作用)

我想:

1.

<input onLoad="this.disabled=false" id="post-comment" type="submit" 
value="Post Your Comment" disabled="disabled"/> 

2.

<input onLoad="this.removeAttribute('disabled');" id="post-comment" type="submit" 
value="Post Your Comment" disabled="disabled"/> 

3.

<input onLoad="document.getElementById('post-comment').removeAttribute('disabled');" 
id="post-comment" type="submit" value="Post Your Comment" disabled="disabled"/> 

不工作。我是JavaScript新手,但无法在网上找到答案。

回答

4

问题是输入元素没有“onload”事件。 The spec显示可用的事件为:

onfocus  %Script;  #IMPLIED -- the element got the focus -- 
    onblur  %Script;  #IMPLIED -- the element lost the focus -- 
    onselect %Script;  #IMPLIED -- some text was selected -- 
    onchange %Script;  #IMPLIED -- the element value was changed -- 
    onclick  %Script;  #IMPLIED -- a pointer button was clicked -- 
    ondblclick %Script;  #IMPLIED -- a pointer button was double clicked-- 
    onmousedown %Script;  #IMPLIED -- a pointer button was pressed down -- 
    onmouseup %Script;  #IMPLIED -- a pointer button was released -- 
    onmouseover %Script;  #IMPLIED -- a pointer was moved onto -- 
    onmousemove %Script;  #IMPLIED -- a pointer was moved within -- 
    onmouseout %Script;  #IMPLIED -- a pointer was moved away -- 
    onkeypress %Script;  #IMPLIED -- a key was pressed and released -- 
    onkeydown %Script;  #IMPLIED -- a key was pressed down -- 
    onkeyup  %Script;  #IMPLIED -- a key was released -- 

因为它不会出现好像任何这些会帮助你,你可能最好关闭的事件添加到body元素的onload(或通过更强大的手段,如jQuery的文档准备功能)。这里的快速黑客的方法来做到这一点:

<body onload="document.getElementById('post-comment').disabled=false"> 
+0

这将无法正常工作......提问者希望该按钮被禁用,直到JS处于活动状态,并且onload需要启用JS。 – 2010-03-17 23:31:06

+0

精英绅士:你没有任何意义。 – 2010-03-18 02:17:42

0

您可以强制提交按钮调用实际进行提交的javascript函数。

0

submit元素的onload参数是一个Javascript事件处理函数。因此,如果用户没有启用Javascript,则此事件不会触发。

我建议如下:

而不必在该页面的提交按钮,有一个形象,这是一个灰色按钮。然后,执行如下操作:

<img onLoad="enableSubmit()" .../> 

onLoad事件处理程序只会在启用Javascript时触发。在您的enableSubmit()函数(在别处定义)中,您可以用输入类型=“submit”替换img标签。

1

如何:

<script> 
function enableInput(){ 
    document.getElementById('post-content').disabled=false; 
} 
</script> 
<body onload="enableInput();"> 
... 
<input id="post-comment" type="submit" 
    value="Post Your Comment" disabled="true"/> 

这将加载默认情况下禁用输入按钮和执行JavaScript,使其能够对网页的加载(这当然会根据您的示例代码与启动Javascript才会发生。

1

<input id="post-comment" type="submit" value="Post Your Comment" disabled="disabled" /> 

then javascript

<script type="text/javascript"> 
    window.onload = function() { 
    document.getElementById('post-comment').disabled=false; 
    } 

    //OR using JQuery 
    $(document).ready(function() { 
     document.getElementById('post-comment').disabled=false; 
    }); 
</script> 

//That's it really. 

希望这会有所帮助。

1

你想这样的:

<input id="post-comment" type="submit" value="Post Your Comment" disabled="disabled"/> 
<script type="text/javascript"> 
document.getElementById("post-comment").disabled = false; 
</script> 

要其他人:你为什么要等待onload

1

“除非javascript是on”,你的意思是应该禁用表单的提交,除非JS在该浏览器上受支持吗?

如果是,您应该使默认提交按钮处于禁用状态。编写您的JS代码以在注释块中启用提交按钮(<! - - >)。也可以使用<noscript>标记来通知客户端,直到在客户端浏览器上启用JS后才能使用该功能。