2012-01-01 2 views
0

Это мой кодJQuery получить весь текст DIV

<div class="formItem"> 
    <asp:Label ID="Label1" runat="server" Text="Label">Test Label:</asp:Label> 
    <asp:TextBox ID="TextBox1" runat="server">Test Text</asp:TextBox> 
</div> 

Если я использую JQuery

alert($('.formItem').text()) 

результат будет "Test Label:"

Как я могу получить результат как «Тестовая метка: тестовый текст»

+0

Это поможет, если вы выложили сгенерированный HTML вместо ASP кода. – David

ответ

0

Asp: TextBox - это вход, который вы можете получить с помощью метода val() элемента.

Что-то вроде этого:

alert($('.formItem').text() + $('.formItem').find("input[text]").val()); 
2

использовать следующее,

alert($('.formItem').text() + ":" + $('.formItem #TextBox1').val()'); 
+0

'' val'' - это функция, а не свойство. – David

+0

Извините, что я ошибся .. я отредактировал ответ –

1

Объяснение

Я вижу, что вы думаете.

alert($('.formItem').text()) 

Это фактически распечатать весь текст внутри класса .formItem. Проблема, однако, в том, что вход (текстовое поле) не имеет текста, он имеет только значение.
Или, если быть более точным, у него есть атрибут value. Это не так очевидно в вашем примере ASP.

Обычно HTML будет выглядеть как этот

<div class="formItem"> 
    <label id="Label1" for="TextBox1">Test Label:</label> 
    <input id="TextBox1" type='text' value='Test Text' /> 
</div> 

В JQuery, чтобы получить атрибут value, есть сокращенная функция называется .val(), и является эквивалентом .attr("value")


Решение

Here's a JSFiddle example.

Простым подходом было бы рассматривать элементы отдельно и затем конкатенировать строки.

alert($("#Label1").text() + " " + $("#TextBox1").val()); 

Это выведет "Test Label: Test Text"


Альтернативное решение

Here's a JSFiddle example.

Чтобы продемонстрировать, как вы могли бы сделать это с родительским контейнером, я буду использовать функции .children() и .each()

var sResult = ""; 
$('.formItem').children().each(function(){ 
    var sOutput = $(this).text(); 

    //check if the text is empty for the child, then get the value instead 
    if(sOutput == "") 
     sOutput = $(this).val(); 

    //if the text isn't empty, add it to the result string 
    if(sOutput != "") 
     sResult += " "+sOutput; 
}); 

alert(sResult); 

Это также выход "Test Label: Test Text"

Обратите внимание, что этот пример не нужно знать имена меток и элементов ввода, это также влияет на все .formItem контейнеры.

Check this example out.

+0

Я бы использовал альтернативное решение от ShadowScripter, потому что время от времени будет увеличиваться моя Label & Textbox. – user1125107

+0

Привет ShadowScripter, ваш код очень хорош для меня. Но у меня была другая проблема при использовании кода, когда выпадающий список внутри div. Я получаю все элементы в раскрывающемся списке, но не только выбранный элемент. Не могли бы вы посоветовать мне, как улучшить код? – user1125107

+0

@ user1125107 Я не могу вам помочь, пока не увижу ваш текущий код. Я советую вам создать новый вопрос, чтобы кто-то мог вам помочь. Дайте мне ссылку на новый вопрос, и я могу взглянуть на него. Также, пожалуйста, отметьте наилучший ответ на ваш вопрос как «Принято» (маленький зеленый чек-знак). – ShadowScripter

Смежные вопросы