javascript - 如何创建自动禁用选择选项?
问题描述
我对选项选择有一些问题。
如果用户没有选择尺码 T 恤,我希望选择选项自动禁用。在总订单中,选项选择与库存尺寸 T 恤相同的最大订单。
考试 : S 码有 15 个库存 尺码 M 有 20 个库存
并在选项中选择与尺寸 T 恤库存对应的最大订单。如果用户选择尺寸 s 选项选择订单自动最大数量为 15,用户选择尺寸 m 选项选择订单自动最大数量为 20。
关于从数据库中获取的股票数量
我将 codeigniter 与 bootstrap 一起使用
这是我的代码:选择选项尺寸 T 恤
<?php
$sprod = $stok['stok_s'];
$mprod = $stok['stok_m'];
$lprod = $stok['stok_l'];
if ($sprod == 0 && $mprod != 0 && $lprod != 0) {
echo '<select name=produk_size id=produk_size class=form-control onchange=proses_stok() style=width:95%>
<option value=0>Select Size:</option>
<option value=stok_s disabled>s</option>
<option value=stok_m>m</option>
<option value=stok_l>L</option>
</select>';
?>
选项 选择订单号
<select name="produk_stok" id="produk_stok" class="form-control" style="width:95%">
<?php
$stok_prod = $stok['stok_s'] + $stok['stok_m'] + $stok['stok_l'];
if ($stok_prod == 0 )
{
echo "<option value=0> 0 </option>";
}
else{
for($a=$stok['min_buy'];
$a<=$stok['stok']; $a+=1)
{
echo "<option value=$a>$a</option>";
}
}
?>
</select>
Javascript
<script type="text/javascript">
function proses_stok(){
var produk_stock = document.getElementById("produk_size").value;
document.getElementById("produk_stock").value=produk_stock;
}
</script>
当我更改大小时,选项选择编号没有改变。当我选择“选择尺寸”时,选项选择编号订单没有禁用/只有 0 个库存
解决方案
您可以使用for-loop
从特定值禁用所有选项,该值将传递给一个函数,我们将在该函数中获取length
select-box 中的选项,然后在循环下使用这个来禁用 select-box 中的选项。
演示代码:
function proses_stok() {
var produk_stock = document.getElementById("produk_size").value;
document.getElementById("produk_stok").value = produk_stock;
//if value is small
if (produk_stock == "stok_s") {
disable_values(15); //disable from
} else if (produk_stock == "stok_m") {
disable_values(20); //disable from
} else {
//enable all options
$("#produk_stok option").prop('disabled', false);
}
}
function disable_values(start) {
var s = document.getElementById("produk_stok");
var end = s.options.length; //getting length of option
//first enabled all options
$("#produk_stok option").prop('disabled', false);
//loop through all options
for (var i = start; i < end; i++) {
s.options[i].disabled = true; //disabled
}
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select name=produk_size id=produk_size class=form-control onchange=proses_stok() style=width:95%>
<option value=0>Select Size:</option>
<option value=stok_s>s</option>
<option value=stok_m>m</option>
<option value=stok_l>L</option>
</select>
<select name="produk_stok" id="produk_stok" class="form-control" style="width:95%">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
</select>
更新 1:
要添加选项直到特定值,您可以使用for
循环将end
值传递给它,然后将数据附加到某个变量,然后使用此数据附加innerHTML
到选择框下显示。
演示代码:
function proses_stok() {
var produk_stock = document.getElementById("produk_size").value;
//if value is small
if (produk_stock == "stok_s") {
disable_values(15); //add till this option
} else if (produk_stock == "stok_m") {
disable_values(20); //add till this option
} else if(produk_stock == "0") {
document.getElementById("produk_stok").innerHTML = "<option value='0'>0</option>";
}else{
//if large size select
//do somthing ..
}
}
function disable_values(end) {
var s = document.getElementById("produk_stok");
var data="";
//loop through all options
for (var i = 1; i <= end; i++) {
//append options
data +="<option value="+i+">"+i+"</option>";
}
//add data to select box
s.innerHTML= data;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select name=produk_size id=produk_size class=form-control onchange=proses_stok() style=width:95%>
<option value=0>Select Size:</option>
<option value=stok_s>s</option>
<option value=stok_m>m</option>
<option value=stok_l>L</option>
</select>
<select name="produk_stok" id="produk_stok" class="form-control" style="width:95%">
<option value="0">0</option>
</select>
推荐阅读
- python - 如何删除 json 中的“转义斜线”?
- sql - 当数字 0.0 乘以负数字/整数时,BigQuery 产生负 (!) 零
- identityserver4 - IdentityServer4 与移动应用程序的谷歌身份验证?
- ios - 合并 - 订阅 PassthroughSubject 的发布者两次
- c++ - 两个默认构造函数,一个是公共的,一个是私有的
- arrays - C 更新数组
- javascript - 如何在Angular9的组件中使用外部html文件作为模板?
- javascript - 键盘打开时将页脚固定在屏幕底部?
- javascript - 我有一个带有子架构的架构。我想更新子架构中的特定数据
- java - Selenium chromedriver 无法找到嵌套在类标签内的 href 标签