javascript - jquery prop() 立即(重点?)

标签 javascript jquery

我正在尝试使用 jQuery prop() 方法禁用元素(表单字段)。有两个字段,一个叫做fee,一个叫做currency。每当 fee 设置为 0 时,第二个字段 currency 将被禁用。这样做的诀窍:

        $("#fee").change(function() {
            var disabled = (this.value == "0");
            console.log(disabled);
            $("#currency").prop("disabled", disabled);
        }).change(); //to trigger on load

我想要实现的是,在离开第一个字段之前,第二个字段立即更改为禁用(所以在 focus 而不是 blur 上?)。我想实现这一点的原因是,每当用户使用 TAB 按钮时,他/她会立即选择 currency 之后的字段,以防费用为 0。

这是我目前所拥有的示例: fiddle

最佳答案

试穿 input event 。任何点击或按键操作都会立即生效。归结为 #fee在那一刻是'0',#currency将是 disabled .在 #fee 上尝试制表符、键入或微调器它工作得很好,因为 input事件没有关于如何它获取数据的条件,它唯一关心的是它数据.

此外,当您有 2 个条件并且有另一对条件依赖于它时,您应该从默认条件开始。我开始#fee '0' 和 #currency 处的值disabled .现在它最初以默认值启动,额外的 .change()在链的末端不再需要(虽然我不确定它是否有用...IDK 我没有测试它)。

还添加了 tab-index='0' 到每个输入以确保 Tab 键继续到下一个可用输入。默认情况下,所有输入都以这种方式运行,并且禁用的元素永远不会包含在流中,因此 tab-index='0'可能有点矫枉过正。注意输入继续禁用 #currency得到关注但没有 tab-index='0' .当然使用 input事件将使关注点成为一个有争议的问题。

演示

$("#fee").on('input', function() {
  var activeFee = this.value !== '0' ? false : true;
  $('#currency').prop('disabled', activeFee);
});
<input id='fee' type='number' tab-index='0' value='0'>

<input id='currency' tab-index='0' disabled>

<input id='tariff' type='number'>

<input id='tax' type='number' tab-index='0'>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

关于javascript - jquery prop() 立即(重点?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50949226/

相关文章:

javascript - 使用 JSTL 为 :each 正确创建 JavaScript 数组

带有 jQ​​uery SimpleModal 和 Ajax.BeginForm Helper 的 ASP.NET MVC

javascript - 使用 RequireJS 时,我应该将脚本放在 Yeoman 项目的什么位置?

javascript - 通过调用方法检查数组的单个元素

javascript - 通过 JavaScript 在编辑模式下打开文档

php - Jquery 没有验证我的表单

php - 通过 jQuery 获取 META 描述

javascript - jQuery.getScript() 行为

php - 动态更改下拉列表中的选项值

javascript - 如何 chop JavaScript 方法中列出的变量?