选择选项后如何使多个表单输入出现
how to make multiple form inputs appear after option is selected
长期学习者,第一次海报。
我在这里发现了一个很棒的片段,在从下拉菜单中选择一个选项后,会出现一个表单文本输入。它就像一个魅力,现在每个选项都有一个与之关联的输入。现在我需要调整 js,使选项二出现两个主菜,选项三出现三个主菜,最多五个。目前,每个选项都会出现一个文本框。所以在选项 2 上,我需要 'text1' 和 'text2' 出现,在选项 3 上我需要 'text1' text2' 和 'text3' 出现,等等。
如果我不清楚,请告诉我。这是我正在使用的。
<select id='combo'>
<option>0</option>
<option>1</option>
<option>2</option>
</select>
<input id='text1' style='display: none'/>
<input id='text2' style='display: none'/>
<input id='text3' style='display: none'/> ''
<script>
document.getElementById('combo').onchange = function() {
var display = this.selectedIndex == 0 ? "inline" : "none";
document.getElementById('text1').style.display = display;
var display = this.selectedIndex == 1 ? "inline" : "none";
document.getElementById('text2').style.display = display;
var display = this.selectedIndex == 2 ? "inline" : "none";
document.getElementById('text3').style.display = display;
}
''
非常感谢你的宝贵时间。
我相信有人可以对此进行改进,但它应该有效:
document.getElementById('combo').onchange = function() {
// first reset all to hidden
document.getElementById('text1').style.display = 'none';
document.getElementById('text2').style.display = 'none';
document.getElementById('text3').style.display = 'none';
// then switch case to show the required boxes
switch(this.selectedIndex){
case 0:
document.getElementById('text1').style.display = 'inline';
break;
case 1:
document.getElementById('text1').style.display = 'inline';
document.getElementById('text2').style.display = 'inline';
break;
case 2:
document.getElementById('text1').style.display = 'inline';
document.getElementById('text2').style.display = 'inline';
document.getElementById('text3').style.display = 'inline';
break;
default:
break;
}
}
尝试将其更改为 for 循环。这可能行不通,但您明白了。
document.getElementById('combo').onchange = function() {
for (var i = 0; i <= this.selectedIndex; i++) {
var display = this.selectedIndex == i ? "inline" : "none"; document.getElementById('text'+(i+1)).style.display = display;
}
}
这应该适合你:
$('#combo').change(function(){
$('#myOptionsDiv').html(''); //added this to clear the div before setting inputs
var num =$(this).val();
for(var i = 0; i < num; i++){
$('#myOptionsDiv').append('<input type="text" class="myInputs" /><br>');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id='combo'>
<option>0</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
<div id="myOptionsDiv"> </div>
如果你想访问这些字段,你可以这样做:
var firstInputValue = $('.myInputs:eq(0)).val(); //use 0 in :eq() because arrays start at 0
var secondInputValue = $('.myInputs:eq(1)).val();
我会通过循环在纯 JS 中执行此操作。这也使您能够在不编辑 JS
的情况下添加更多输入
http://jsfiddle.net/odj3pmtg/1
document.getElementById('combo').onchange = function() {
var inputs = document.getElementsByTagName("input");
for (var i = 0; i < inputs.length; ++i)
{
if(i < document.getElementById('combo').value){
inputs[i].style.display = 'inline';
} else {
inputs[i].style.display = 'none';
}
}
}
长期学习者,第一次海报。
我在这里发现了一个很棒的片段,在从下拉菜单中选择一个选项后,会出现一个表单文本输入。它就像一个魅力,现在每个选项都有一个与之关联的输入。现在我需要调整 js,使选项二出现两个主菜,选项三出现三个主菜,最多五个。目前,每个选项都会出现一个文本框。所以在选项 2 上,我需要 'text1' 和 'text2' 出现,在选项 3 上我需要 'text1' text2' 和 'text3' 出现,等等。
如果我不清楚,请告诉我。这是我正在使用的。
<select id='combo'> <option>0</option> <option>1</option> <option>2</option> </select> <input id='text1' style='display: none'/> <input id='text2' style='display: none'/> <input id='text3' style='display: none'/> '' <script> document.getElementById('combo').onchange = function() {
var display = this.selectedIndex == 0 ? "inline" : "none"; document.getElementById('text1').style.display = display;
var display = this.selectedIndex == 1 ? "inline" : "none"; document.getElementById('text2').style.display = display;
var display = this.selectedIndex == 2 ? "inline" : "none"; document.getElementById('text3').style.display = display;
} ''
非常感谢你的宝贵时间。
我相信有人可以对此进行改进,但它应该有效:
document.getElementById('combo').onchange = function() {
// first reset all to hidden
document.getElementById('text1').style.display = 'none';
document.getElementById('text2').style.display = 'none';
document.getElementById('text3').style.display = 'none';
// then switch case to show the required boxes
switch(this.selectedIndex){
case 0:
document.getElementById('text1').style.display = 'inline';
break;
case 1:
document.getElementById('text1').style.display = 'inline';
document.getElementById('text2').style.display = 'inline';
break;
case 2:
document.getElementById('text1').style.display = 'inline';
document.getElementById('text2').style.display = 'inline';
document.getElementById('text3').style.display = 'inline';
break;
default:
break;
}
}
尝试将其更改为 for 循环。这可能行不通,但您明白了。
document.getElementById('combo').onchange = function() {
for (var i = 0; i <= this.selectedIndex; i++) {
var display = this.selectedIndex == i ? "inline" : "none"; document.getElementById('text'+(i+1)).style.display = display;
}
}
这应该适合你:
$('#combo').change(function(){
$('#myOptionsDiv').html(''); //added this to clear the div before setting inputs
var num =$(this).val();
for(var i = 0; i < num; i++){
$('#myOptionsDiv').append('<input type="text" class="myInputs" /><br>');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id='combo'>
<option>0</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
<div id="myOptionsDiv"> </div>
如果你想访问这些字段,你可以这样做:
var firstInputValue = $('.myInputs:eq(0)).val(); //use 0 in :eq() because arrays start at 0
var secondInputValue = $('.myInputs:eq(1)).val();
我会通过循环在纯 JS 中执行此操作。这也使您能够在不编辑 JS
的情况下添加更多输入http://jsfiddle.net/odj3pmtg/1
document.getElementById('combo').onchange = function() {
var inputs = document.getElementsByTagName("input");
for (var i = 0; i < inputs.length; ++i)
{
if(i < document.getElementById('combo').value){
inputs[i].style.display = 'inline';
} else {
inputs[i].style.display = 'none';
}
}
}