我有与此类似的HTML
<input class="rowinput" type="text" id="text_input_1" size="1" value="3">
<input class="rowinput" type="text" id="text_input_2" size="1" value="0">
<select class="rowinput" id="select_input_3">
<option value=""></option>
<option value="0">aaaa</option>
<option value="1" checked>bbbb</option>
<option value="2">cccc</option>
<option value="3">dddd</option>
</select>
现在我需要使用jquery来选择所有输入并获取它们的值,并创建一个表示所有值的字符串。我可以用这个:
$('.rowinput').val();
这将与文本输入完美配合,但对于选择输入则不然。因为我需要它获取与值对应的文本,而不是值本身。例如,在上面的代码中,我需要获得“bbbb”而不是“1”。
然后,我要做的是创建一个新函数,比如说 textVal()从文本输入中获取值并从选择输入中获取文本:
$('.rowinput').textVal();
将返回: 3 0 BBBB
我试图使用:
input.attr('type');
它适用于文本输入。但是对于select,它会返回 undefined
我不想硬编码并单独处理每个输入,因为我需要保持代码的可扩展性。 什么是聪明的方法呢?
答案 0 :(得分:2)
如果您想获得select
的选定值。这是代码
<select class="rowinput" id="select_input_3">
<option value=""></option>
<option value="0">aaaa</option>
<option value="1" selected="selected">bbbb</option>
<option value="2">cccc</option>
<option value="3">dddd</option>
</select>
Jquery,见demo here
$(".rowinput option[selected='selected']").text();
答案 1 :(得分:1)
从类“.rowinput”中提取所有值。你可以试试像贝娄这样的东西:
var concatenatedString = "";
$('.rowinput').each(function(){
var $this = $(this);
if($this.is('input')){
concatenatedString += $this.val();
}
if($this.is('select')) {
concatenatedString += $this.children("option").is("selected").text();
}
});
alert(concatenatedString);
答案 2 :(得分:0)
如果您不喜欢上述内容,这是另一个答案:
<select>
<option></option>
<option>aaaa</option>
<option>bbbb</option>
<option>cccc</option>
<option>dddd</option>
</select>
<div id='name'></div>
$(document).ready(function(){
$("select").change(function(){
var text = $(":selected").text();
$('#name').html(text);
});
});