2017-08-30 97 views
0

我有一個textarea元素,並分配了onchange事件。事件函數驗證textarea的值,如果有問題,必須在用戶可以繼續之前修復它。我有問題,這樣的場景:如何「恢復」onchange事件

1)用戶chnages值 2)他們點擊的textarea =>調用onChanged被激發 3)驗證失敗,所以我顯示一個警告,我調用$(「#元素外「).focus()=>用戶回來編輯 4)如果他們現在單擊外部元素而沒有任何文本修改,則不會觸發onchange事件,這就是問題所在。所以我需要「重置」onchange狀態 - 在我調用$(「#element」)。focus()之前指定原始值。是否有可能與JS做到這一點,或者我必須自己用onblur事件來處理它嗎?

+0

你也可以嘗試的onblur驗證的事件,這是觸發時元素失去焦點 – Roman

+0

'onblur'事件應該解決問題。 –

回答

0

嘗試onkeyup事件而不是更改。您可能需要稍微更改驗證

+0

sry,它沒有任何意義 - 這意味着只要用戶按下某個鍵就會進行驗證....因此,當用戶「處於變化中」時,內容將始終無效,因爲首先必須完成更改... – user3523426

0

一個簡單的解決方法可以做到這一點。

在onfocus處理程序中,保存當前值temporare,然後將val設置爲空字符串,然後再次設置值。

$("#element").on("focus", function() { 
    var val = $("#element").val(); 
    $("#element").val(""); 
    $("#element").val(val); 
}) 

$("#element").focus() 

呀,監聽onblur和驗證,甚至是更好的解決方案,而無需破解/解決方法。

0

onblur事件會解決你的問題,因爲它每次都會引發元素失去焦點:

$('#elementID').blur(function() { 
    // validation 
})