2009-10-20 93 views
2

我使用JavaScript來驗證形式,如何在DOM準備好之前阻止表單提交?

,但無法處理的情況時,DOM之前提交的表單準備好

我想:

<form method="POST" disabled="disabled"> 
<input type="submit" /> 
</form> 

但形式可以仍然有潛力。

回答

1

就在檢查之前提交只是爲了防止之前DOM已準備就緒後。

<form method="POST" onsubmit="return handle()"> 
    <input type="submit" /> 
</form> 

<script> 

    function handle() 
    { 
     return imReady; 
    } 

    var imReady = false; 
    function setReady() 
    { 
     imReady = true;   
    } 

    // edit: add this line 
    window.onDomReady = setReady(); 
</script> 
+0

「窗口」對象上的'onDomReady'屬性來自哪裏? – 2010-03-27 22:17:26

0

使用jQuery創建DOM負荷提交按鈕

$(document).ready(function() { 
    $("form").append("<input type='submit' name='submit' value='submit'>"); 
} 

然而,這將創建的javascript依賴於你的應用程序

或者另一種選擇是把下面的代碼

<form action="post.php" method="post" onsubmit="return false"> 
+0

不,用戶可以通過按「Enter」來清除表格 – Mask 2009-10-20 10:23:51

+0

很確定如果沒有提交按鈕,表單將不會提交。使用我的頂級解決方案將確保在創建提交按鈕之前加載DOM – wiifm 2009-10-20 10:29:43

+0

當然可以提交表單:) – reto 2011-06-28 10:08:13

2

一個braindead的方式是保持提交按鈕(或表單)被禁用,並在window或內啓用它10的onload事件。例如:

window.onload = function() { 
    document.getElementById("mySubmit").disabled = false; 

    //or maybe 
    document.forms[0].disabled = false; 
} 
0

檢查this blog entry,它描述瞭如何檢查DOM準備情況。然後,創建返回true一種功能,當DOM準備就緒,並使用你的窗體標記內這樣的功能:

<form onsubmit="return my_DOM_ready_function()">