javascript - Onchange 选择框显示输入框使用jQuery
问题描述
我有一个使用 jquery 显示输入框 onChange 的简单代码。
<select id="selectBox" onchange="changeFunc();">
<option value="MCA">MCA</option>
<option value="MBA">MBA</option>
<option value="not_listed">Not Listed</option>
</select>
<input name="dd_number" placeholder="Add New" class="form-control" type="text" style="display: none" id="textboxes">
<script type="text/javascript">
function changeFunc() {
var selectBox = document.getElementById("selectBox");
var selectedValue = selectBox.options[selectBox.selectedIndex].value;
if (selectedValue == "not_listed") {
$('#textboxes').show();
} else {
alert("Error");
$('#textboxes').hide();
}
}
</script>
使用此代码,我只能在选择字段的选择选项上添加一个 ( 1 ) 输入框。我需要一个多选但不工作。问题出在哪里?如果我想选择 4 个选择选项,我想显示 4 个输入框,或者如果我单击 2 个选择选项以显示 2 个输入框。谢谢大家的帮助!
使用 PHP 函数进行代码编辑:
<div class="col-md-6 mb-3">
<label>Choose dimension product</label>
<select class="select2" name="size_id[]" multiple id="selectBox" onchange="changeFunc();">
<?php
$get_sizes = "select * from sizes";
$sizes = mysqli_query($con,$get_sizes);
while($row_size = mysqli_fetch_array($sizes)){
$size_id = $row_size['id_size'];
$size_name = $row_size['product_size'];
$i++;
?>
<option value="not_listed"><?php echo $size_name; ?></option>
<?php } ?>
</select>
<div class="col-md-3 mb-3">
<input name="<?php echo $size_name; ?>" placeholder="Product price" class="form-control" type="text" style="display: none" id="textboxes">
<script type="text/javascript">
function changeFunc() {
document.getElementById('textboxcont').innerHTML = '';
var selectBox = document.getElementById("selectBox");
var selectedValues = Array.from(document.getElementById('selectBox').selectedOptions).map(el=>el.value);
//alert(selectedValues)
for( var i = 0; selectedValues.length > i; ++i ) {
var i1 = document.createElement("input");
i1.setAttribute("type", "text");
i1.setAttribute("name", "<?php echo $size_name; ?>");
// you may want to change this
// add the file and text to the div
document.getElementById('textboxcont').appendChild(i1);
}
}
</script>
</div>
解决方案
您可能想要动态添加文本输入,无论如何您都可以添加 4 个输入并显示隐藏它们,但这是我认为您正在尝试实现的示例。对于多选,您可以使用 select2 之类的插件,也可以使用如下所示的多选。
function changeFunc() {
document.getElementById('textboxcont').innerHTML = '';
var selectBox = document.getElementById("selectBox");
var selectedValues = Array.from(document.getElementById('selectBox').selectedOptions).map(el=>el.value);
//alert(selectedValues)
for( var i = 0; selectedValues.length > i; ++i ) {
var i1 = document.createElement("input");
i1.setAttribute("type", "text");
i1.setAttribute("name", "dd_number");
// you may want to change this
// add the file and text to the div
document.getElementById('textboxcont').appendChild(i1);
}
}
<select id="selectBox" onchange="changeFunc();" multiple>
<option value="MCA">MCA</option>
<option value="MBA">MBA</option>
<option value="not_listed">Not Listed</option>
</select>
<div id="textboxcont">
</div>
推荐阅读
- javafx - jpackage检查是否安装了mysql 8,如果没有安装
- authentication - 通过第三方服务(Google、Facebook)通过电子邮件地址自动连接用户帐户是否被视为安全风险?
- r - 使用R中的arrange()函数不会以新顺序打印数据帧
- javascript - 如何在循环中遍历数组并使用 RN 和 Moment.js 计算这些日期之间的日期
- python - Python asside 函数不返回任何值
- javascript - 反应本机中的音量增大/减小按下事件
- algorithm - 两组点之间的最小距离
- matlab - MATLAB中复合层压板的遗传算法优化
- javascript - TouchableWithoutFeedback onPress 没有触发
- javascript - Angular如何在浏览器重新加载/刷新之前跟踪/检查时间