Как получить текст из диапазона поля ввода, когда он получает фокус? - PullRequest
2 голосов
/ 23 декабря 2011

Как я могу получить текст из диапазона, который предшествует вводу текста, и когда этот ввод получает фокус, получить диапазон сфокусированного ввода?скажем, что входные данные выглядят так:

<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 ]

4 голосов
/ 23 декабря 2011

Вы имеете в виду диапазон, который следует ваш ввод?Вот как ваш 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').focus(function() {
   var text = $(this).prev("span").text();
});

Или сделать это более общим и способным работать с любой вход

$(document).on("focus", "input[type='text']", function() {
   var text = $(this).prev("span").text();
});
0 голосов
/ 23 декабря 2011

try

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

DEMO // здесь используется click, вы можете изменить это на focus

.siblings ()

0 голосов
/ 23 декабря 2011

Если вы знаете, что интервал является следующим элементом:

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

Также не нужно указывать класс span для вашего диапазона.

...