[英]Why submit button is not enabled immediately on change to textfield?
使用此代碼,只有在以下情況下,按鈕才會啟用:
我在文本字段中輸入內容
我將焦點移出了文本字段。
鍵入內容后,如何獲取啟用的按鈕?
function validateAmount(){ if ($('#parlay-amount-textfield').val().length > 0) { $("#parlay-submit-button").prop("disabled", false); } else { $("#parlay-submit-button").prop("disabled", true); } } $(document).ready(function(){ validateAmount(); $('#parlay-amount-textfield').change(validateAmount); });
在焦點離開input
字段之前, change
事件不會觸發。
您可以在現代瀏覽器中使用input
事件,該事件會立即觸發。 或多種事件的組合以支持稍舊的瀏覽器: input change paste click
,您可以立即對其進行響應,然后input change paste click
keydown
,在短暫的延遲后需要進行響應。 但是我認為input
法的這些天非常好,除了不支持IE8的IE8例外。
僅input
示例:
function validateAmount() { if ($('#parlay-amount-textfield').val().length > 0) { $("#parlay-submit-button").prop("disabled", false); } else { $("#parlay-submit-button").prop("disabled", true); } } $(document).ready(function() { validateAmount(); $('#parlay-amount-textfield').on("input", validateAmount); });
<input type="text" id="parlay-amount-textfield"> <input type="button" id="parlay-submit-button" value="Send"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
與例如input change paste click
立即處理keydown
一個非常短暫的延遲后:
function validateAmount() { if ($('#parlay-amount-textfield').val().length > 0) { $("#parlay-submit-button").prop("disabled", false); } else { $("#parlay-submit-button").prop("disabled", true); } } $(document).ready(function() { validateAmount(); $('#parlay-amount-textfield') .on("input change paste click", validateAmount) .on("keydown", function() { setTimeout(validateAmount, 0); }); });
<input type="text" id="parlay-amount-textfield"> <input type="button" id="parlay-submit-button" value="Send"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
旁注:FWIW, validateAmount
可以短一些:
function validateAmount() {
$("#parlay-submit-button").prop("disabled", $('#parlay-amount-textfield').val().length == 0);
}
而且,如果僅空格不是有效值,則可以考慮在$('#parlay-amount-textfield').val()
周圍拋出$.trim()
$('#parlay-amount-textfield').val()
(或在現代瀏覽器中,使用$('#parlay-amount-textfield').val().trim()
)。
Since we are using the change event the input fields focus tends to say that user has not yet ended up his field with data.so only after the focus is moved the button gets enabled u can use the above Link for further clarifications
[1]"https://jsfiddle.net/MuthuramanNagarajan/gs2sff6j/"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.