更改无法正常工作的复选框的属性
Change attribute for a checkbox not working correctly
我有很多输入框,不同页面的密码类型。现在我有一个小复选框,上面写着"显示密码",选中后,它会将类型密码更改为文本。简单吧?
现在,该行业的一些天才决定,对于其中一个页面,他们希望按钮显示"隐藏密码"。但只为那一页。现在理论上,这很好,但实际情况是,当我在包含"隐藏密码"的页面上时,只有当我"取消选中"复选框时,字段才会从类型文本更改为密码。即我必须点击两次。我该怎么绕过这个?我知道这很简单,但它让我精神错乱。
HTML:
<input type="checkbox" data-toggle-input="js-show-char-toggle" class="ml-small">Hide password
<input type="text" value="" class="js-show-char-toggle">
显示密码
jQuery:
$('input[data-toggle-input]').on('click', function() {
var $self = $(this),
inputToggleClass = $self.data('toggle-input'),
inputType = $self.prop('checked') ? 'text' : 'password';
$('.' + inputToggleClass).prop('type', inputType);
});
如果你试试小提琴,你就会明白我的意思了。如果使用第一个复选框,则当取消选中该复选框时,该字段将仅"隐藏"。第二个效果很好。我做错了什么?
您应该能够在不同的输入中使用它:
$('input[data-toggle-input]').on('click', function () {
$(this).next().prop('type', $(this).next().prop('type') == 'text' ? 'password' : 'text')
});
jsFiddle示例
您已将布尔逻辑切换为反情况。
$('input[data-toggle-input]').on('click', function() {
var $self = $(this),
inputToggleClass = $self.data('toggle-input'),
inputType = !$self.prop('checked') ? 'text' : 'password';
$('.' + inputToggleClass).prop('type', inputType);
});
如果您添加!为了改变结果,它按预期工作。
相关文章:
- 复选框一次选中一个不在gridview中工作
- 更改无法正常工作的复选框的属性
- 复选框选择/取消选择触发器第一次工作,但在随后的尝试中失败
- 复选框在手动触发后停止工作
- 复选框的checked属性的修改不会;工作不正常
- 我正试图获得一个带有复选框的多选下拉列表,在填充项目和获得所有选中的工作时遇到了一些问题
- ajax后表单复选框更改时jquery ajax不工作
- 当选中一个复选框时,表单中的所有其他复选框都必须禁用-不工作
- 检测Bootstrap Switch Jquery中的类更改(将工作复选框JS转换为按钮JS)
- jQuery检查所有复选框只工作一次
- Rally自定义应用程序复选框筛选器不工作
- 使按钮像复选框一样工作,挖空js
- Angular/Ionic/Javascript:无法让下拉过滤器作为复选框工作
- 动态创建的复选框验证在 jquery 中无法正常工作
- Jquery attr 无法正常工作复选框必需属性
- 复选框检查器在表中不起作用.代码在没有表标记的情况下工作
- jQuery复选框组选中/取消选中仅工作一次
- “选择所有行无法正常工作”复选框
- 单击按钮时的多重删除复选框无法按要求工作
- :空白选择器不工作复选框jQuery Validate()