使用removeattr启用文本框并想要再次禁用

问题描述 投票:0回答:3

如果条件匹配,我想启用所有文本框。有一个包含YES / NO作为选项的下拉列表。如果选择是,那么我想再次禁用一些文本框,但它不起作用。我使用此代码启用所有文本框:

$(':input').removeAttr('disabled');

之后,如果从下拉列表中选择是,我使用此代码。

$(document).ready(function() {
    var n = $("#pharmacy_pur").val();
    if(n == "YES")
    {
         $('#pharmacy_amount').attr("disabled", "disabled");
    }
}); 

但它不起作用。有人建议我如何解决这个问题。我想要启用所有文本框,如果选择了下拉选项(是),则禁用其中一些。这是html部分:

<select name="pharmacy_pur" ID="pharmacy_pur">
 <option value="YES"<?php echo $r1 == "YES" ? " selected" : ""?>>YES</option>
<option value="NO"<?php echo $r1 == "NO" ? " selected" : "";?>>NO</option>
                                </select>
<input type="text" name="pharmacy_amount" ID="pharmacy_amount"/>

PHP代码:

$qu="select * from `scan_1` where P_no='1'";
$res=mysqli_query($con,$qu);
if(!$res || mysqli_num_rows($res)==0)
{
echo '<script>alert("Invalid:");</script>';
} 
$row=mysqli_fetch_assoc($res);
$r1=$row["Pharmacy_purchase"];
javascript jquery
3个回答
1
投票

使用prop而不是attr更新DOM属性,如disabledchecked等。

更换

$(':input').removeAttr('disabled');

$(':input').prop('disabled', false);

if(n == "YES")
{
         $('#pharmacy_amount').attr("disabled", "disabled");
}

$('#pharmacy_amount').prop("disabled", ( n == "YES") );

演示

$(document).ready(function() {
  var n = $("#pharmacy_pur").val();
  $(':input').removeAttr('disabled');

  $("#pharmacy_pur").change(function() {
    var n = $(this).val();
    $('#pharmacy_amount').prop("disabled", (n == "YES"));
  });

  $("#pharmacy_pur").change();

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="pharmacy_pur" ID="pharmacy_pur">
   <option value="YES" class="1">YES</option>
   <option value="NO" class="1">NO</option>
</select>
<input type="text" name="pharmacy_amount" ID="pharmacy_amount" />

0
投票

试试这个

$(document).ready(function() {
  $('#pharmacy_pur').on('change', function() {
    var n = $("#pharmacy_pur option:selected").text();
    if (n == "YES") {
      $('#pharmacy_amount').prop("disabled", true);
    }
  });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="pharmacy_pur">
<option value="">--select--</option>
<option value="YES">YES</option>
<option value="NO">NO</option>
</select>
<br>
<input type="text" id="pharmacy_amount">

0
投票

如果你想同时启用和禁用文本框,那么将循环放在你启用的js代码中,如:

$(document).ready(function() {
var n = '<?php echo $pr; ?>';
var r1='<?php echo $r5;?>';
if(n == "1")
{
    $(':input').removeAttr('readonly');
    $(':input').prop('disabled', false);
    if(r1=="NO")
    {
        $('#pharmacy_amount').attr("disabled", "disabled");
    }
 }
© www.soinside.com 2019 - 2024. All rights reserved.