2016-10-26 27 views
0

我有一個選項和一個選項,該選項具有用戶想要繪製的輸入數量,之後用戶可以在該輸入中輸入信息,最後他們必須單擊按鈕顯示該值,現在我這樣做是這樣的:如何從N個動態輸入中獲取數值

var value1 = $('#Input1').val(); 

這裏的問題是,用戶最多可以創建200個輸入,所以如果我繼續用上述方法這樣做我會需要用200個輸入來完成,而且它有很多代碼行,我的問題是如果退出獲取N個輸入值的方式,我使用for循環動態地繪製輸入,所以所有輸入ID都是類似Input(MyForVariable), Input1, Input2... etc ,所以也許我想創造另一個循環來獲得價值那投入,這裏是我的代碼:

$(document).ready(function() { 
 
    $('#sel').change(function() { 
 
    draw(); 
 
    }); 
 
    
 
    $('#btn').click(function() { 
 
    show(); 
 
    }); 
 
}); 
 

 
function draw() { 
 
    var selected = $('#sel').val(); 
 
    var html = ""; 
 
    
 
    for (i = 1; i <= selected; i++) { 
 
    html += '<input type="text" id="Imput' + i + '" />'; 
 
    } 
 
    $('#forms').html(html); 
 
} 
 

 
function show() { 
 
    var total = $('#sel').val(); 
 
    
 
    if (total == 2) { 
 
    var val1 = $('#Imput1').val(); 
 
    var val2 = $('#Imput2').val(); 
 
    
 
    alert(val1 + val2); 
 
    } 
 
    
 
    if (total == 3) { 
 
    var val1 = $('#Imput1').val(); 
 
    var val2 = $('#Imput2').val(); 
 
    var val3 = $('#Imput3').val(); 
 
    
 
    alert(val1 + val2 + val3); 
 
    } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 

 
<select id="sel"> 
 
    <option value="2">A</option> 
 
    <option value="3">B</option> 
 
    <option value="4">C</option> 
 
    <option value="5">D</option> 
 
</select> 
 

 
<div id="forms"> 
 
</div> 
 

 
<button id="btn">Click</button>

+0

只需在每個輸入中添加類,然後根據類循環輸入並獲取其值。 –

回答

1

把所有input個容器內,並遍歷它們:

$('#add').on('click', function() { 
 
    $('<input />').appendTo('#myinputs'); 
 
}); 
 

 

 
$('#get').on('click', function() { 
 
    var values = []; 
 
    
 
    $('#myinputs input').each(function() { 
 
    values.push(this.value); 
 
    }); 
 
    
 
    console.log(values); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 

 
<div id="myinputs"> 
 
    <input /> 
 
</div> 
 

 
<button id="add">Add another input</button> 
 

 
<hr /> 
 

 
<button id="get">Get values</button>

0

你總是可以像這樣循環扔你的輸入:

var myInputArray = []; 

$('input[type="text"]').each(function(){ 
    myInputArray.push($(this).val()); 
} 

然後你就可以在陣列中鎖定讓你的價值觀:

alert(myInputArray[0]) //The first value of the array => first input 
+0

噢,謝謝! – Zorken17

+2

您的選擇器未選擇您認爲應該選擇的內容(您需要刪除該空間)。 –

+0

謝謝,當我寫它的時候有點慌張 – Zorken17

1

您可以設置一些屬性,並得到所有元素有它:

$(document).ready(function() { 
 
    $('#sel').change(function() { 
 
    draw(); 
 
    }); 
 
    
 
    $('#btn').click(function() { 
 
    show(); 
 
    }); 
 
}); 
 

 
function draw() { 
 
    var selected = $('#sel').val(); 
 
    var html = ""; 
 
    
 
    for (i = 1; i <= selected; i++) { 
 
    html += '<input type="text" id="Imput' + i + '" to-count />'; 
 
    } 
 
    $('#forms').html(html); 
 
} 
 

 
function show() { 
 
    var total = $('#sel').val(); 
 
    var sum = ""; 
 
    var inputs = $('[to-count]'); 
 
    
 
    console.log(inputs.length); 
 
    for (let i=0; i < inputs.length ; i++){ 
 
    sum += inputs[i].value;  
 
    } 
 

 
    alert(sum); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 

 
<select id="sel"> 
 
    <option value="2">A</option> 
 
    <option value="3">B</option> 
 
    <option value="4">C</option> 
 
    <option value="5">D</option> 
 
</select> 
 

 
<div id="forms"> 
 
</div> 
 

 
<button id="btn">Click</button>

0

您可以使用以下代碼獲取每個選擇選項的值:

$("#sel option").each(function() { 
    console.log($(this).val()); 
}); 
+0

何時使用代碼片段,代碼需要工作。在這種情況下,也許只能更好地使用代碼格式。 –

+0

@LucasCosta - 修正。 – Birksy89

+0

謝謝,好多了:) –