javascript - 如果选择第 1 或 2nr,则禁用第 3、4 个下拉列表

标签 javascript jquery

我有这个问题:在我的表单中有 4 个下拉列表,当选择第一个 (category1) 或第二个 (software1) 下拉列表时,必须禁用第三个 (category2) 和第四个 (software2)。

对于这个问题,我在 disable-second-dropdown-if-the-first-is-not-selected 找到了这个脚本但我不相信修改这个:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
category1
<select name='cat1'>
  <option value='0'>Select one</option>
  <option value='1'>little</option>
  <option value='2'>good</option>
</select>

software1
<select name='soft1'>
  <option value=''>Select one</option>
  <option value='W'>Word</option>
  <option value='E'>Excel</option>
  <option value='PP'>Power Point</option>
</select>

<br />
category2
<select name='cat2'>
  <option value='0'>Select one</option>
  <option value='1'>little</option>
  <option value='2'>good</option>
</select>

software2
<select name='soft2'>
  <option value=''>Select one</option>
  <option value='W'>Word</option>
  <option value='E'>Excel</option>
  <option value='PP'>Power Point</option>
</select>

<script type="text/javascript">
var setEnabled = function(e) {
  var name = this.name.replace(/1/, '2'); //get name for second drop down
  $('select[name=' + name + ']')
      .prop('disabled', 0 === this.selectedIndex) // disable if selected option is first one
};

$(function() {
  $('select[name=cat1], select[name=soft1]')
      .on('change', setEnabled)
      .trigger('change'); // trigger on page load
});
</script>

如何修改?

谢谢

最佳答案

我认为你想要的主要是将 === 翻转为 !==

但是,要使其在矩阵上运行,其中两个顶部输入都会触发两个底部输入的启用/禁用,您需要在其中任何一个发生变化时都进行测试。

var setEnabled = function(e) {
  var selected = $('select[name=cat1]').prop('selectedIndex') > 0 || $('select[name=soft1]').prop('selectedIndex') > 0;
  $('select[name=cat2], select[name=soft2]').prop('disabled', selected); // disable if selected option is first one
  if (selected) {
    $('select[name=cat2], select[name=soft2]').prop('selectedIndex', 0)
  }
};

$(function() {
  $('select[name=cat1], select[name=soft1]')
      .on('change', setEnabled)
      .trigger('change'); // trigger on page load
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
</script>
category1
<select name='cat1'>
  <option value='0'>Select one</option>
  <option value='1'>little</option>
  <option value='2'>good</option>
</select>

software1
<select name='soft1'>
  <option value=''>Select one</option>
  <option value='W'>Word</option>
  <option value='E'>Excel</option>
  <option value='PP'>Power Point</option>
</select>

<br />
category2
<select name='cat2'>
  <option value='0'>Select one</option>
  <option value='1'>little</option>
  <option value='2'>good</option>
</select>

software2
<select name='soft2'>
  <option value=''>Select one</option>
  <option value='W'>Word</option>
  <option value='E'>Excel</option>
  <option value='PP'>Power Point</option>
</select>

关于javascript - 如果选择第 1 或 2nr,则禁用第 3、4 个下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39709801/

相关文章:

javascript - 在 jquery 中制作表格行而不是表格标题可点击

javascript - 如何限制我的 ng-repeat 值

javascript - JQuery $.change 没有注意到 .prop ("checked"所做的更改,是的)

JavaScript,无法使其工作

javascript - 回复从jquery到rails的帖子

javascript - 将 JSON 对象数组动态放入表中的有效方法是什么?

javascript - 高效填充下拉列表: Javascript vs Database (Mysql-Django)

javascript - 旧浏览器是否支持 HTML 5 数据属性?

javascript - 如果将文本输入到表单输入中,如何使 div 出现

php - 将mysql数据输出到jquery的变量中