這是一個棘手的開始一個早晨。jQuery動態聚焦於第一個INPUT或Textarea
我有一系列的圖標。當你點擊一個圖標時,它會加載一個表單。一些表單有輸入[文本]其他人有textareas。
我在想什麼是jQuery,一旦我加載的形式,我可以運行,將...聚焦在第一個輸入或textarea無論它可能是動態的,所以我不需要如果塊。
想法?
這是一個棘手的開始一個早晨。jQuery動態聚焦於第一個INPUT或Textarea
我有一系列的圖標。當你點擊一個圖標時,它會加載一個表單。一些表單有輸入[文本]其他人有textareas。
我在想什麼是jQuery,一旦我加載的形式,我可以運行,將...聚焦在第一個輸入或textarea無論它可能是動態的,所以我不需要如果塊。
想法?
編輯
這實際上並沒有很大的溶液中。下面的Patricia's和Onkelborg的解決方案更加優雅。
var $firstInput = jQuery("input:first");
var $firstTextArea = jQuery("textarea:first");
if(firstInput.length == 0) {
$firstTextArea.focus();
}
else {
$firstInput.focus();
}
一些代碼將是很好的..但這個應該很容易。
假設你加載你的到,你知道的id一個div ....
所有你需要做的是一樣的東西
已加載後您的形式
+1忽略我的答案。Patricia's是對的。 – 2010-10-26 17:19:25
這又是jQuery的力量,'dothis.dothat.thendothis'我喜歡它! – 2010-10-26 17:25:11
好的解決方案。但是如果你的第一個輸入元素是一個隱藏的輸入字段。你應該使用:$('#TheIdOfYourFormDiv')。find('input:text,textarea')。first()。focus() – Dirk 2015-11-21 12:52:32
$(":input:first").focus();
:input
選擇器抓取所有輸入,textarea,選擇和按鈕元素。
+1爲最短,最易讀的一個 – 2013-01-02 17:45:11
它還選擇一個隱藏的輸入元素,如果您的第一個元素被隱藏,它將無法使用。 – 2015-06-12 10:07:19
這:
$('#form-id :input:enabled:visible:first').focus();
#形式-id爲形式的ID; :輸入選擇任何輸入和textarea元素; :啓用確保輸入是可編輯的; :viisble確保元素可見; :第一是明顯
+1提醒我,我已隱藏輸入:) – 2013-02-15 18:32:05
這應該是正確的答案 – 2015-04-02 17:33:24
或甚至更好,如果你不希望頁面底部的提交按鈕被聚焦(頁面滾動到一半):$('form:input:enabled:visible:first')。not(':input [type = button],:input [type = submit],:input [type = reset]') 。焦點(); – RWC 2017-12-19 13:43:12
它爲我工作負載事件。
$('#Div').find('input:first').focus();
因爲:可見是一個jQuery擴展且不部分CSS 說明書,使用查詢:可見不能利用由本機DOM querySelectorAll() 方法提供的 性能提升。要在使用時達到最佳性能:選擇 元素可見,請首先使用純CSS選擇器選擇元素,然後使用.filter(「:visible」)選擇 。
使用,而不是:
$('form').filter(':input:first').focus();
或:
$('input').first().focus(); //as shown in the "correct" answer.
的同時也要記住使用.focus()
試圖將焦點設置到一個隱藏的元素時,會導致錯誤 Internet Explorer。注意僅在可見的 元素上使用.focus()。要在元素的焦點未設置 時運行元素的焦點事件處理程序,請使用.triggerHandler(「focus」)而不是 .focus()。
這是我的解決方案。該代碼應該很容易遵循,但這裏的理念是:
的代碼:
function focusFirst(parent) {
$(parent).find('input, textarea, select')
.not('input[type=hidden],input[type=button],input[type=submit],input[type=reset],input[type=image],button')
.filter(':enabled:visible:first')
.focus();
}
然後只需調用focusFirst與您的父元素或選擇器。
選擇:
focusFirst('#parentId');
元素:
var el = $('#parentId');
focusFirst(el);
這裏有一種對@craztmatt和其他人最重要的是制定引導模態的解決方案。我已經擴展到在觸發事件的模式中選擇目標元素。這一個捕獲輸入,textarea和選擇元素。
// do this to make bootstrap modals auto-focus.
// delegate to body so that we only have to set it up once.
$('body').on('shown.bs.modal', function (e) {
var ele = $(e.target).find('input[type=text],textarea,select').filter(':visible:first'); // find the first input on the bs modal
if (ele) {ele.focus();} // if we found one then set focus.
})
不完全是OP的問題,但也應該適應純jQuery的情況。
你可以發佈加載你的新表單的代碼嗎? – Patricia 2010-10-26 17:18:11