Javascript 如果下拉列表的值包含“未付”,则其他下拉列表将自动为只读
我想做的是,当下拉列表paymentstatus的值为“未支付”时,其他两个下拉列表将不会自动单击。我的代码正在工作,只是因为我使用onclick,所以我需要单击下拉菜单才能使代码工作。有没有其他方法不必单击下拉列表Javascript 如果下拉列表的值包含“未付”,则其他下拉列表将自动为只读,javascript,php,html,Javascript,Php,Html,我想做的是,当下拉列表paymentstatus的值为“未支付”时,其他两个下拉列表将不会自动单击。我的代码正在工作,只是因为我使用onclick,所以我需要单击下拉菜单才能使代码工作。有没有其他方法不必单击下拉列表 <div class="row"> <div class="col-md-3"> <label>Order Status</label>
<div class="row">
<div class="col-md-3">
<label>Order Status</label>
<?php
require '../includes/db.php';
$sql = $connection->prepare("SELECT * FROM orderstatus");
$sql->execute();
$data = $sql->fetchAll();
echo "<select name='orderstatusid' id='orderstatusid' class='form-control orderstatusid' required>";
foreach($data as $row):
echo "<option class='dropdown' value='{$row['orderstatusid']}'>".htmlspecialchars($row["description"])."</option>";
endforeach;
echo "</select>";
?>
<br />
</div>
<div class="col-md-3">
<label>Payment Status</label>
<?php
require '../includes/db.php';
$sql = $connection->prepare("SELECT * FROM paymentstatus");
$sql->execute();
$data = $sql->fetchAll();
echo "<select name='paymentstatusid' id='paymentstatusid' class='form-control paymentstatusid' onchange='disableotherdropdown()' required>";
foreach($data as $row):
echo "<option class='dropdown' value='{$row['paymentstatusid']}'>".htmlspecialchars($row["description"])."</option>";
endforeach;
echo "</select>";
?> <br />
</div>
<div class="col-md-6">
<label>Date of Payment</label>
<input type="date" name="paiddate" id="paiddate" class="form-control paiddate" required/>
<br />
</div>
</div>
<script>
function disableotherdropdown() {
var val = $(".paymentstatusid").val();
if (val != '1') {
$('.paiddate').css('border-color', 'red');
$('.orderstatusid').attr("readonly", false);
$('.paiddate').attr("readonly", false);
} else {
$('.orderstatusid').attr("readonly", true);
$('.paiddate').attr("readonly", true);
$('.paiddate').css('border-color', '#ccc');
}
}
</script>
订单状态
$(文档).ready(函数(){
$(“#paymentstatusid”).change(函数()
{disableotherdropdown()});
函数disableotherdropdown(){
var val=$(“#paymentstatusid”).val();
警报(val)
如果(val!=1){
警报(“a”);
$('#orderstatusid').attr(“禁用”,false);
}否则{
警报(“b”);
$('#orderstatusid').attr(“disabled”,true);
}
}
});
啊
支付
不付报酬的
A.
B
更改
只读以禁用works
$('#orderstatusid').attr(“disabled”,true)
$(文档).ready(函数(){
$(“#paymentstatusid”).change(函数()
{disableotherdropdown()});
函数disableotherdropdown(){
var val=$(“#paymentstatusid”).val();
警报(val)
如果(val!=1){
警报(“a”);
$('#orderstatusid').attr(“禁用”,false);
}否则{
警报(“b”);
$('#orderstatusid').attr(“disabled”,true);
}
}
});
啊
支付
不付报酬的
A.
B
更改
只读以禁用works
$('#orderstatusid').attr(“disabled”,true) 这些
是否可由用户编辑?我认为这是不可能的,只读意味着用户不能编辑文本。我相信您想要$('select')。prop('disabled',true)
可能是这是Dom加载问题窗口。onload=disableotherdropdown()您第一次尝试过此窗口。load检查而不单击请求禁用其他字段。将默认值设置为空,并尝试在之前为每个设置paymentstatusloop@gowthamrajan我尝试了window.onload=disableotherdropdown(),但当paymentstatus已支付时,它不会读取代码:if(val!=“1”){$('.paiddate').css('border-color','red');$('.orderstatusid').attr(“readonly”,false);$('.paiddate').attr(“readonly”,false);
val=1是未付的val=2这些
可以由用户编辑吗?我认为这是不可能的,readonly意味着用户无法编辑其文本。我相信您想要$('select').prop('disabled',true)
可能是这是Dom加载问题窗口。onload=disableotherdropdown()您是否尝试过此窗口。首次加载以检查而不单击请求以禁用其他字段。请将默认值设置为空,并在每次加载之前尝试paymentstatusloop@gowthamrajan我尝试了window.onload=disableotherdropdown()但是,当paymentstatus已支付时,它不会读取代码:如果(val!=“1”){$(“.paiddate”).css('border-color','red');$('orderstatusid').attr(“readonly”,false);$('.paiddate').attr(“readonly”,false);
val=1未支付,val=2已支付
<script>
$(document).ready(function(){
$("#paymentstatusid").change(function()
{disableotherdropdown()});
function disableotherdropdown(){
var val =$("#paymentstatusid").val();
alert(val)
if (val !=1) {
alert('a');
$('#orderstatusid').attr("disabled",false);
} else {
alert('b');
$('#orderstatusid').attr("disabled", true);
}
}
});
</script>
<body>
<select id='paymentstatusid'>
<option selected val='0'>hhh</option>
<option value='1'>paid</option>
<option value='2'>unpaid</option>
</select>
<select id='orderstatusid'>
<option selected="selected" val='0' > </option>
<option val='1'>a</option>
<option val='2'>b</option>
</select>
</body>