2011-12-23 37 views
2

如何從文本輸入前的跨度文本中獲取文本,以及何時該輸入獲得焦點獲取焦點輸入的跨度?讓說,輸入是這樣的:如何在獲得焦點時從輸入字段的跨度中獲取文本?

<div> 
<label for="id">...</label> 
<input type="text" id="id" value="" /> 
<span class="span">span</span> 
</div> 

是有辦法獲得的價值,也許是這樣的:

$('#id').live('focus', function(){ 
var text = $(this, '.span').text(); 
}); 

我做一個現場的結合,因爲輸入動態創建 我」我也試過類似的東西,但似乎沒有工作:

var text = $(this).find('.span').text(); 

謝謝你提前!

回答

3

你的意思是一個跨度,成功您的輸入?這就是你的html的結構。

我認爲這是你在找什麼

$('#id').live('focus', function(){ 
    var text = $(this).siblings("span:first").text(); 
}); 

或者,如果你是100%肯定,跨度將永遠是旁邊的輸入,你可以做

$('#id').live('focus', function(){ 
    var text = $(this).next().text(); 
}); 

但如果你真的想這樣做,你的輸入之前緊跟的跨度,你可以使用prev功能:

$('#id').live('focus', function(){ 
    var text = $(this).prev("span").text(); 
}); 

最後,請注意live已被棄用。一般情況下我建議切換到on,但因爲你只是通過ID選擇單個元素,何不乾脆做:

$('#id').focus(function() { 
    var text = $(this).prev("span").text(); 
}); 

或者做出更一般的,並能夠與任何輸入工作

$(document).on("focus", "input[type='text']", function() { 
    var text = $(this).prev("span").text(); 
}); 
+0

這並就非常感謝你 – 2011-12-23 07:20:55

+0

@SamuelLopez - 我的榮幸 - 很高興它的工作! – 2011-12-23 07:22:30

0

如果您知道跨度的下一個元素:

$('#id').live('focus', function(){ 
    var text = $(this).next().text(); 
}); 

也沒有必要給類span到你的範圍。

0

嘗試

$('#id').live('click', function(){ 
    var text = $(this).siblings('span').text(); 
    alert(text); 
}); 

DEMO //這裏是使用click,您可以將此更改爲focus

.siblings()

相關問題