2016-09-29 16 views
0

我想要獲取我的網站上的某些textareas和input-tags的標籤和值。有很多投入/ textereas,我不想擁有所有這些,只有textareas /輸入在一個特定的區域。例如,在以下情況下,我只希望有一個名爲B中的texterea後傳來的所有值:打印位於格式化區域的textareas/inputs的標籤和值

var inputs; 
 

 
$('textarea').each(function(){ 
 
\t \t var name= $(this).attr('name'); 
 
\t \t inputs += name+': '+$(this).val()+'<br>'; 
 

 
\t }) 
 

 
document.write(inputs);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<form id="form" method='post' action="/form"> 
 
\t <div class="form-group"> 
 
\t \t <label class="control-label">label_a</label> 
 
\t \t <textarea name="a" class="form-control" rows="1"></textarea> 
 
\t </div> 
 
\t <div class="form-group"> 
 
\t \t <label class="control-label">label_b</label> 
 
\t \t <textarea name="b" class="form-control" rows="1"></textarea> 
 
\t </div> \t \t \t \t \t \t \t \t \t 
 
\t <div class="form-group"> 
 
\t \t <label class="control-label">label_c</label> 
 
\t \t <textarea name="c" class="form-control" rows="1"></textarea> 
 
\t </div> \t \t \t \t \t \t \t \t 
 
\t <div class="form-group"> 
 
\t \t <label class="control-label">label_d</label> 
 
\t \t <textarea name="d" class="form-control" rows="1"></textarea> 
 
\t </div> 
 
</form>

但這還不是問題的全部。而不是名稱,我想要輸入/文本區域的標籤。我是否需要爲每個控件和標籤添加for-attribut來做到這一點,還是有更簡單的方法來做到這一點?

sombody可以說,爲什麼它首先打印「undefined」?

我會很幸運的,如果有人可以幫助我:)

+0

它首先打印「未定義'因爲你永遠不會初始化它的價值或空字符串 – depperm

回答

0

首先初始化inputs,然後檢查名稱是經過「B」如果只想後段,並獲得標籤文字使用$(this).prev().text()

var after='b'; 
 
var inputs=''; 
 
var found=false; 
 

 
$('textarea').each(function(index){ 
 
    if(found){ 
 
var name= $(this).prev().text(); 
 
inputs += name+': '+$(this).val()+'<br>'; 
 
    } 
 
    if($(this).attr('name')==after) 
 
found=true; 
 
}); 
 

 
document.write(inputs);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<form id="form" method='post' action="/form"> 
 
\t <div class="form-group"> 
 
\t \t <label class="control-label">label_a</label> 
 
\t \t <textarea name="a" class="form-control" rows="1">this is content of a</textarea> 
 
\t </div> 
 
\t <div class="form-group"> 
 
\t \t <label class="control-label">label_b</label> 
 
\t \t <textarea name="b" class="form-control" rows="1">this is content of b</textarea> 
 
\t </div> \t \t \t \t \t \t \t \t \t 
 
\t <div class="form-group"> 
 
\t \t <label class="control-label">label_c</label> 
 
\t \t <textarea name="c" class="form-control" rows="1">this is content of c</textarea> 
 
\t </div> \t \t \t \t \t \t \t \t 
 
\t <div class="form-group"> 
 
\t \t <label class="control-label">label_d</label> 
 
\t \t <textarea name="d" class="form-control" rows="1">this is content of d</textarea> 
 
\t </div> 
 
</form>

+0

確定謝謝你到目前爲止。但是「> b」只給我輸入名稱以c或d或e等開頭的標籤。我的問題是我需要輸入b之後的輸入。你可以用k或somithing替換名字b。 –

+0

@nina_berlini所以它的'b'或'k'之後的部分不論'name'是什麼? – depperm

+0

@nina_berlini你如何決定或選擇你想要的部分? – depperm

0

只是初始化輸入。

var inputs = ""; 

更新:

使用標籤的名稱,更改變量名稱爲以下內容:

var name= $(this).parent().find('label').html(); 
+1

,不回答所有的OP問題 – depperm

+0

得到的標籤,你可以縮短它到'$(this).prev()。text()' – depperm

0

你可以使用父()

var inputs = ""; 
$('textarea').each(function(){ 
    var name_label = $(this).parent().find('label').text(); 
    var values = $(this).val(); 
    console.log(name_label + " : " + values); 
    inputs+=name_label + " : "+ values; 
}); 
document.write(inputs); 

而且如果您想要另一個標籤的其他文字,請替換標籤的標籤,例如,span,p,div等。