2013-10-24 55 views
0

我的頁面上有一堆<textarea>元素,它們都具有相同的「name」屬性。我試圖捕捉當前處於焦點textarea的文字:用jQuery捕獲textarea的文本值

$('body').on('click', '[name=btnAddQuestion]', function() { 

    questionText = $("[name=stem]").val(); 
    console.log('questionText: ' + questionText); 

}); 

但我只能把它捕捉到第一<textarea>在列表中的文本。有沒有辦法做到這一點,而不必給每個文本框一個唯一的ID?

謝謝!

這裏是一個的jsfiddle:

http://jsfiddle.net/9b2XA/2/

回答

2

一旦你點擊你的textarea按鈕會失去焦點,所以:focus選擇器對你沒有好處。

單擊按鈕後,您可以將焦點設置回最後一個textarea,然後使用:focus選擇器來拉動文本。

http://jsfiddle.net/9b2XA/3/

在這撥弄我抓住最後的焦點textarea的,然後集中回按鈕被按下時。

var lastFocus; 
$("textarea").blur(function() { 
    lastFocus = this; 
}); 

$('body').on('click', '[name=btnAddQuestion]', function() { 

    if(lastFocus) { lastFocus.focus(); } 
    questionText = $("[name=stem]:focus").val(); 
     console.log('questionText: ' + questionText); 

}); 
4

嘗試使用:focus選擇。

$("[name=stem]:focus").val(); 

實際上,你可以簡單地做到以下幾點:

$(document.activeElement).val(); 

編輯:其實不會,因爲工作,一旦你點擊該按鈕,文本區域失去焦點。我寫得太快了。

但是,你可以做的是跟蹤哪個是最後textarea有焦點,並在你的點擊處理程序中使用它。

var lastFocusedTextArea = null; 

$('textarea[name=stem]').focus(function (e) { 
    lastFocusedTextArea = e.currentTarget; 
}); 
1

使用此代碼:

$('body').on('click', '[name=btnAddQuestion]', function() {  
    questionText = $("[name=stem]:focus").val(); 
    console.log('questionText: ' + questionText);  
}); 

UPDATE:

正如其他人在這裏提到的,點擊該按鈕時,您的文本區域失去了焦點,因爲該按鈕現在有它在這種情況下,您必須保留最後一個焦點元素並將其用於點擊處理函數中:

var lastFocusedTextArea = null; 

$('textarea[name=stem]').focus(function (e) { 
    lastFocusedTextArea = e.currentTarget; 
}); 

$('body')。on('click','[name = btnAddQuestion]',function(){if(lastFocusedTextArea.is('textarea')){ questionText = lastFocusedTextArea.val(); console.log('questionText:'+ questionText); } });

+0

這不會遺憾的是工作,因爲一旦按鈕被點擊,textarea不再有焦點了。我犯了同樣的錯誤。 – plalx

+0

@plalx對,我會改變我的答案。 –

+0

@plalx已更改。 –

1

如果你想要得到的文本區域中的每一個文字,你需要在它們之間迭代:

$("[name=stem]").each(function() { 
    questionText = $(this).val(); 
    console.log('questionText: ' + questionText); 
}); 

如果你婉去的文字是有側重的用戶時的參考點擊按鈕,你必須在所有文本區域附加一個blur事件處理程序,並記錄「最後焦點」的文本區域(因爲當用戶點擊按鈕時焦點會改變)

+0

他需要專注的文本。 –

1

您可以在最後一個聚焦的textareas文本存儲在一個變量,然後你需要用它做,當你點擊按鈕什麼都:

$(document).ready(function() { 
    var txt = ''; 
    $('textarea[name="stem"]').blur(function() { 
     txt = $(this).text(); 
    }); 
    $('input[name="btnAddQuestion"]').click(function() { 
     alert(txt); 
    }); 
});