2010-03-17 69 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後才能使用該功能。