JavaScript启用“提交”按钮(不起作用)

时间:2010-03-17 23:14:39

标签: 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新手,但无法在网上找到答案。

7 个答案:

答案 0 :(得分: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">

答案 1 :(得分:2)

你想要这个:

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

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

答案 2 :(得分: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时才会启用。

答案 3 :(得分:1)

根据您的示例代码

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

然后在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.

希望这有帮助。

答案 4 :(得分:1)

“除非javascript打开”,你是否应该禁用表单的提交,除非该浏览器支持JS?

如果是,您应该默认禁用提交按钮。编写JS代码以启用注释块中的提交按钮(&lt;! - - &gt;)。也可以使用&lt; noscript&gt;标记,通知客户端在客户端浏览器上启用JS之前,功能不可用。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

我建议如下:

没有页面中的提交按钮,而是拥有一个灰色按钮的图像。然后,做这样的事情:

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

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