2011-07-15 75 views
1

我有一個URL提交表單,我希望它具有目前無法實現的特定行爲。最初我希望啓用按鈕。有人輸入URL並點擊「提交」按鈕後,我想調用我的checkURL()函數。如果該函數返回true,我希望該按鈕被禁用,然後我想打開remote_file.php。如果它返回false,我希望按鈕被啓用,並讓他們嘗試另一個URL。禁用按鈕HTML

<form name=URLSubmitForm 
    action="remote_file.php" 
    method="post"> 

    <input type="hidden" name="MAX_FILE_SIZE" value="524288000"> 
    <input type="text" name="name" size="50"> 
    <input type="submit" 
     onchange="this.disabled=false" 
     onclick="this.disabled=true; checkURL();" 
     value="submit"> 
</form> 

編輯:它看起來像我只是把onchange放在錯誤的地方。最後我這樣做是爲了修復重新啓用按鈕

<input type="text" onchange="submit.disabled=false" name="name" size="50">

謝謝!

回答

1

我建議您將事件處理代碼附加到表單的onsubmit事件,而不是按鈕事件。你試圖控制的是表單是否發佈。在驗證邏輯運行時禁用按鈕是次要目標。

試試這個:

<script type="text/javascript"> 
function checkURL(){ 
    var submitButton = document.getElementById('submitButton'); 
    submitButton.disabled=true; 

    /* implement your validation logic here 
    if(url is invalid){ 
     submitButton.disabled=false; 
     return false; 
    } 
    */ 

    // everything is valid, allow form to submit 
    return true; 
} 
</script> 

<form name="URLSubmitForm" action="remote_file.php" onsubmit="return checkURL();" method="post"> 
     <input type="hidden" name="MAX_FILE_SIZE" value="524288000"> 
     <input type="text" name="name" size="50"> 
     <input type="submit" name="submitButton" id="submitButton" value="submit"> 
</form> 
+0

返回false從onclick提交按鈕是一種常見的驗證模式 –

+0

非常有幫助,謝謝! – Corey

1
<input type="submit" 
    onclick="if (checkURL()) { this.disabled='disabled'; return true; } else { return false; }" 
    value="submit"> 
+0

根據[MDN Docs](https://developer.mozilla.org/en/XUL/Property/disabled),「disabled」屬性類型爲「布爾型」 –

+0

這很好,除非它不重新激活按鈕if文本在框中被更改 – Corey

+0

它永遠不會被禁用,因爲如果checkurl返回表單將提交併且您得到一個乾淨的開始 –

0

如何在表單的onsubmit事件:

<form onsubmit="(function(){ 
    if(checkURL()){ 
     this.elements['submit'].disabled = 'disabled'; 
    } 
    else{ 
     return false; 
    } 
})()"> 

因爲你沒有給任何Ajax代碼,形式仍然可以正常提交當頁面重新加載時,按鈕將再次啓用。

0

onclick =「checkURL(this);」

function checkURL(arg){ 
    this.disabled=true; 
    if(<something>) this.disabled=false; 
}