我有一個帶有多個文本輸入的HTML表單。我想清除之前緊挨着的元素,直到按下「清除」按鈕。我如何在JavaScript中獲取該元素?如何在JavaScript中獲得之前關注的元素?
注意:重寫以考慮意見。
我有一個帶有多個文本輸入的HTML表單。我想清除之前緊挨着的元素,直到按下「清除」按鈕。我如何在JavaScript中獲取該元素?如何在JavaScript中獲得之前關注的元素?
注意:重寫以考慮意見。
當你點擊「清除」按鈕時,只有被聚焦的元素是「清除」按鈕。你必須解決它。 (觸發onblur事件)
是啊。那就是問題所在。我試圖用 document.activeElement 但沒有用。 :( – HashimR
哦,那個悖論是悲劇...... * sob sob * – DhruvPathak
我討厭'focus'事件沒有'justblurred'(或類似的)屬性,它可能是'null',它不是特定的元素 – nnnnnn
正如創世紀提到的那樣,點擊時清除按鈕將有焦點。但是,您可以通過爲表單創建一個onBlur事件來解決此問題,該事件會將之前觸摸的元素的ID存儲在變量或隱藏表單輸入中。
不錯的解決方法 – genesis
var focused, inputs=document.getElemntsByTagName('input');
for (var i=0, input; i<inputs.length && input = inputs[i]; i++) {
if (input.type === 'text') {
// Better use addEventListener and attachEvent, I'm just too lazy to type that on my phone
input.onfocus = function() {
focused = this;
}
}
}
或者jQuery中: var focused; $('input:text').focus(function(){focused = this;});
比,當你想清楚聚焦元素,focused.value='';
用於存儲當前聚焦元素的ID創建一個全局變量,
var cur_id;
爲每個元素的onblur
調用一個函數並通過ID
<input type="text" id="name" name="name" onBlur="setId(this.id)">
,並從功能
function setId(id) {
cur_id = id;
}
寫入將ID設置爲全局變量,並寫清楚按鈕的onclick功能,這樣
function clear() {
document.getElementById(cur_id).value = "";
}
最簡單的方法是在按鈕上的mousedown
事件中存儲對document.activeElement
的引用,雖然這是一個以鼠標爲中心的方法,並且不適用於鍵盤和其他設備的按鈕「點擊」。
現場演示:http://jsfiddle.net/tEP6w/
代碼:
var clearButton = document.getElementById("clear");
var previousActiveElement = null;
clearButton.onmousedown = function() {
previousActiveElement = document.activeElement;
};
clearButton.onclick = function() {
if (previousActiveElement && previousActiveElement != this) {
previousActiveElement.value = "";
}
};
一個更好的辦法是參考存儲document.activeElement
作爲按鈕即將接收焦點。但是,在所有瀏覽器中實現這一點都有點棘手。
的思想工作上面,如果你與形式的工作,你可以定義一個隱藏的輸入,並分配給它的最後一個重點投入的id的值:
<input type="hidden" id="focused_element" value="">
$('input:text, textarea').focus(function() {
$('#focused_element').val($(this).attr('id'));
});
,然後拿起值在適當的較晚時間:
var focused = $('#focused_element').val();
當按下「清除」按鈕時,當前的焦點元素將是「清除」按鈕本身。好的,所以我有點傻,顯然你想知道哪個領域失去了重點,但是如果用戶使用tab鍵導航到「清除」會怎樣? – nnnnnn
你應該編輯這個問題的瓦片,因爲沒有答案真的回答「如何獲得當前焦點元素的JavaScript」,我來到這裏通過搜索... –
@BaptistePernet:檢查出祝福的答案... – HashimR