abstract从不同的输入类型中获取值

时间:2012-03-27 05:05:56

标签: jquery select input

我有与此类似的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

我不想硬编码并单独处理每个输入,因为我需要保持代码的可扩展性。 什么是聪明的方法呢?

3 个答案:

答案 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);
});
});