2011-04-21 88 views
3

如何禁用提交按鈕,直到文本區域的字符超過100個字符?禁用提交按鈕,直到文本區域ihas超過100個字符

這是用於檢查用戶是否選擇上傳圖像的代碼。請告訴我如何命名我的textarea並指導我完成安裝。

$(function() { 
    $('form').submit(function() { 
     if(!$("form input[type=file]").val()) { 
     alert('You must select a file!'); 
     return false; 
     } 
    }); 
}); 
+0

你說的是一個文本區域或文件輸入?每個人都在回答文字區域問題。 – RobG 2011-04-21 04:12:36

回答

-1

您可以更新每一個文本區域內的數據改變時提交按鈕,但是這是有問題的,因爲每個瀏覽器具有文字區域不同的事件(在JavaScript)

A的狀態常見的做法是設置一個時間間隔來檢查提交框,然後根據該時間確定按鈕的布爾值。例如

window.setInterval(function(){ $('#submitBtn').disabled = $("#textArea").val().length < 100 }, 100); 

(代碼未測試)

+0

如何設置間隔? – EnexoOnoma 2011-04-21 03:44:16

+2

根本不需要* setInteral()*,只需在textarea(或某個父元素)上使用keyup即可。 – RobG 2011-04-21 03:45:31

+0

keyup不會總是成功,如果他們右鍵單擊並粘貼信息會怎麼樣。 – AlanFoster 2011-04-21 03:46:30

-1

用戶更喜歡它,如果字符在文本區域數量上提交驗證。如果小於100,則取消提交併向用戶提供錯誤消息,說明原因。據推測,頁面上有提示,因此用戶應該知道100個字符的標準以及他們輸入了多少個字符。

如果你真的想要禁用按鈕,那麼在頁面加載時使用腳本禁用它。使用按鍵監聽器來計算textarea中的字符,並在超過100個時啓用提交按鈕。您可能還需要列出其他事件,所以如果用戶通過拖動或粘貼來更改文本,則提交按鈕被禁用財產更新得當。

+0

不處理所有需要的事件,-1 – AlanFoster 2011-04-21 03:47:34

+0

@ user551841 - 是的,這就是爲什麼驗證提交是一個更好的選擇和推薦的方法。 – RobG 2011-04-21 04:14:20

-1

大廈MiniTech移動的相當簡潔的回答:

$(function() { 
    $('form').submit(function() { 
     if(!$("form input[type=file]").val()) { 
      alert('You must select a file!'); 
      return false; 
     } 

     if($("#theTextArea").val().length <= 100) { 
      alert("You must enter more than 100 characters!"); 
      return false; 
     } 
    }); 
}); 

只是要測試

+0

在我的情況下,在代碼中正確添加了textarea和提交按鈕? – EnexoOnoma 2011-04-21 04:03:41

+0

沒有真正知道你的HTML代碼是什麼,這很難說 - 但這個功能對錶單提交事件作出反應...所以它不會讓人提交(雖然,按鈕不明顯禁用) – HorusKol 2011-04-21 04:06:21

+0

您的文字說: 「textaera」,但你的代碼說'表單輸入[類型=文件]' – RobG 2011-04-21 04:13:22

5

首先,使提交按鈕被禁用,例如特定的textarea的ID替換theTextArea

<input type="submit" disabled="disabled" id="submitid" /> 

接下來,您應該編寫一個函數,將計算在用戶寫入textarea的長度,這可以通過使用jQuery中或在的onkeyup普通的JavaScript的KEYUP函數來完成。 例jQuery中:

$("#textareaid").keyup(function() { 
    if((this).val().length > 100) { 
    $("#submitid").removeAttr('disabled'); 
    } else { 
    $("#submitid").attr("disabled", "disabled"); 
    } 
}); 

注:代碼未經測試。

的setInterval方法:

setInterval(function() { 
    if($("#textareaId").val().length > 100) { 
    $("#submitid").removeAttr("disabled"); 
    } else { 
    $("#submitid").attr("disabled", "disabled"); 
    } 
}, 500); //Runs every 0.5s 

全尺寸例如:

<form> 
    <textarea id="textareaId"></textarea> 
    <input type="submit" id="submitId" disabled="disabled" /> 
</form> 
<script type="text/javascript"> 
    setInterval(function() { 
    if($("#textareaId").val().length > 100) { 
     $("#submitId").removeAttr("disabled"); 
    } else { 
     $("#submitId").attr("disabled", "disabled"); 
    } 
    }, 500); //Runs every 0.5s 
</script> 
+0

你知道這不會將按鈕設置爲true,對嗎? – AlanFoster 2011-04-21 03:52:01

+0

現在它會忘記將id屬性添加到輸入標籤。 – 2011-04-21 03:53:51

+0

如果用戶只是粘貼一些信息會怎樣?我擔心這個表單將用於粘貼內容... – EnexoOnoma 2011-04-21 04:02:38

相關問題