Объяснение
Я вижу, что вы думаете.
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.
Это поможет, если вы выложили сгенерированный HTML вместо ASP кода. – David