2012-03-27 47 views
1

我有類似這樣抽象的get價值

<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選擇所有輸入,並得到他們的價值觀,並創建表示所有的值一個字符串的HTML。我可以使用這個:

$('.rowinput').val(); 

這將工作完美的文本輸入,但對於選擇輸入它不。因爲我需要它獲取與該值相對應的文本,而不是值本身。例如,在上面的代碼中,我需要得到「bbbb」而不是「1」。

那麼,我所要做的是,使一個新的功能,說textVal()即會從文本輸入的值,並從選擇輸入文本:

$('.rowinput').textVal(); 

將返回: BBBB

我試圖使用:

input.attr('type'); 

它適用於文本輸入。但選擇它返回undefined

我不想硬編碼和單獨處理每個輸入,因爲我需要保持我的代碼可擴展。 這樣做的智能方式是什麼?

+0

沒你剛剛想選擇的值或整個事情? – Dips 2012-03-27 05:10:52

+0

不,我不想要這個值,我需要對應於所選值的文本。 – 2012-03-27 05:16:08

+0

好的,看我的答案,我想這將有助於 – Dips 2012-03-27 05:16:54

回答

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); 

+0

夠好!謝謝。 – 2012-03-27 05:25:44

+0

如果答案足夠好,請選擇是提高您的評分的正確答案。否則人們會停止回答你的問題。謝謝 – 2012-03-27 05:27:53

+0

謝謝你告訴我。我想我需要重複15次才能做到這一點。 – 2012-03-27 05:32:29

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(); 
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); 
}); 
});