2014-08-28 3 views
-2

У меня есть простой HTML разметки, как показано ниже: -.text() и .val() в выберите тег

<select id="select1"> 
<option></option> 
<option>AAA</option> 
<option>BBB</option> 
<option>CCC</option> 
<option>DDD</option> 
<option>EEE</option> 
</select> 

<textarea style="height:150px;width:150px" id="t1"></textarea> 
<textarea style="height:150px;width:150px" id="t2"></textarea> 

Jquery код: -

$("#select1").change(function(){ 
    $("#t1").val($(this).text());   // 1st 
}); 

$("#select1").change(function(){ 
    $("#t2").val($(this).val());    // 2nd 
}); 

Мои вопросы: -

1.) Когда я использую 1-й код jquery с использованием .text(), текст всех вариантов в теге select отображается вместо этого, я ожидал, что в первом коде jquery должен отображаться только выбранный текст опции.

2.) Когда я использую код 2 jquery с использованием .val(), в этом случае работает .val(), хотя я не ожидаю, что он будет работать, потому что в моем выпадающем списке нет значений, но он работает и дает выбранный текст опции как ценность.

Выше написано два вопроса. Мне просто нужно объяснение, почему первый и второй коды jquery ведут себя неожиданно.

Fiddle Ссылка: - http://jsfiddle.net/mzfmxsd8/

Спасибо заранее .. !!

+2

Ни один или 2 вопрос ... Ваш вопрос? Что вы пытаетесь достичь? – naomik

+0

Если вы напишете val ($ (this) .text()); конечно, будет отображаться все значение # select1. – Richa

+0

@naomik ... plz внимательно прочитайте ... вопросы написаны выше ... код jquery не работает как ожидалось ... – 2014-08-28 04:48:42

ответ

3

1) Вы должны найти option, который выбран, то найти его текст как $("#t1").val($(this).find(':selected').text());. Метод .text() вернет текстовое содержимое всех потомков текущего элемента. Таким образом, он извлекает текст всех параметров в элементе выбора.

2) Если нет, то значение содержания текст рассматривается как значение

option.value

текстовое содержимое этого атрибута представляет собой метку, объясняющую опцию. Если он не определен, его значением по умолчанию является текст содержимого элемента.

Демонстрация: Fiddle

+0

Вы скопировали мой ответ, отредактировали свой и поставили его как свой. Тем не менее, это ответ. @exception. – sahbeewah

+1

@sahbeewah, основанный на timestap, я мог бы сказать, что вы скопировали мой ответ –

+0

, если нет значения, то почему он примет текст вместо значения ??? –

1

В вашем коде вы пытаетесь отобразить текст параметров, выбрав все параметры элемента select. Поскольку вы хотите отображать текст только выбранной опции, вам нужно выбрать только выбранную опцию и отобразить ее текст внутри textarea.

Вот код:

$("#select1").change(function(){ 
    $("#t1").val($(this).find("option:selected").text());   // 1st 
}); 
+0

@ Kartikeya Я также дал объяснение .. !! Пожалуйста, пройдите через это. –

2

this относится к элементу выбора. Когда вы вызываете на него .text(), он извлекает все его потомки (элементы параметров) и извлекает из него текст, что и есть то, что вы видите.

Если значения параметра не имеют атрибута значения, текст внутри него становится его значением. И, таким образом, значение элемента select является выбранным значением параметра.

0

вам просто нужно, чтобы получить выбранный функция преобразования текста

$("#select1").change(function(){ 
    $("#t1").val($(this).find('option:selected').text()); 
}); 

$("#select1").change(function(){ 
    $("#t2").val($(this).val()); 
}); 

DEMO

0

Чтобы получить выбранное значение:

this[this.selectedIndex].value

использования, что в лямбда. Чтение источника jQuery найдет для вас ваш ответ. В частности, вы должны изучить метод val, если хотите знать внутренности.

Пример: http://jsfiddle.net/LnL3trzj/

0

Пожалуйста, свяжитесь с ниже код

$("#select1").change(function(){ 
    $("#t1").val($("#select1 option:selected").text());   
}); 
Смежные вопросы