我不知道我在这里做错了什么。抓我的脑袋,想知道为什么我的功能不起作用。几乎试图切换"显示/隐藏密码"。
目前,我可以从密码切换到文本,但无法切换回密码。你看错了什么?
HTML:
$("#show-password").click(function(e){
e.preventDefault();
if($("input[name='password']").attr('type', 'password') && $("input[name='passwordConfirm']").attr('type', 'password')){
$("input[name='password']").attr('type', 'text');
$("input[name='passwordConfirm']").attr('type', 'text');
}else{
$("input[name='password']").attr('type', 'password');
$("input[name='passwordConfirm']").attr('type', 'password');
}
脚本:
public abstract class RequestModelBase {
//All the properties that are common to your models
}
});
答案 0 :(得分:3)
您正在if条件下分配属性。像这样改变,
$("#show-password").click(function(e) {
e.preventDefault();
if ($("input[name='password']").attr('type') == 'password' && $("input[name='passwordConfirm']").attr('type') == 'password') {
$("input[name='password']").attr('type', 'text');
$("input[name='passwordConfirm']").attr('type', 'text');
} else {
$("input[name='password']").attr('type', 'password');
$("input[name='passwordConfirm']").attr('type', 'password');
}
});
if($("input[name='password']").attr('type', 'password') && $("input[name='passwordConfirm']").attr('type', 'password'))
将始终返回true。
答案 1 :(得分:1)
您使用.attr
的方式将设置属性,而不是比较它的类型
$("#show-password").click(function(e){
e.preventDefault();
if($("input[name='password']").attr('type')=='password' && // Changed here
$("input[name='passwordConfirm']").attr('type')== 'password')
{
$("input[name='password']").attr('type', 'text');
$("input[name='passwordConfirm']").attr('type', 'text');
}else{
$("input[name='password']").attr('type', 'password');
$("input[name='passwordConfirm']").attr('type', 'password');
}
});
修改强>
正如Anoop Joshi指出的那样,他和他之间没有区别。我的答案。通过使用两个input type = "password"
&之间的公共类,进行了一点修改。使用三元运算符进行评估
<强> HTML 强>
<div class="form-group mbs">
<label for="password" class="label-medium mbxs">Password</label><br>
// Used a common class passwordToggle
<input type="password" name="password" class="passwordToggle form-control input-medium" required>
</div>
<div class="form-group mbs">
<label for="passwordConfirm" class="label-medium mbxs ">Password Confirm</label><br>
// Used a common class passwordToggle
<input type="password" name="passwordConfirm" class="form-control input-medium mbs passwordToggle" required><br>
<a href="" id="generate-password" class="btn btn-large btn-green-gradient">Generate Password</a>
<a href="" id="show-password" class="btn btn-large btn-red-gradient">Show/Hide Password</a>
</div>
<强> JS 强>
$("#show-password").click(function(e){
e.preventDefault();
// Minimizing lines of code using ternary operator
$(".passwordToggle").attr('type') == 'password'? $(".passwordToggle").attr('type','text'):$(".passwordToggle").attr('type','password')
});
答案 2 :(得分:1)
你需要使用.attr('type')=='password'。在条件中代替.attr('type','password')。尝试下面的代码
$(“#show-password”)。click(function(e){e.preventDefault(); if($(“input [name ='password']”)。attr('type')=='password' &amp;&amp; $(“input [name ='passwordConfirm']”)。attr('type')=='password'){$(“input [name ='password']”)。attr('type' ,'text'); $(“input [name ='passwordConfirm']”)。attr('type','text');} else {$(“input [name ='password']”)。attr( 'type','password'); $(“input [name ='passwordConfirm']”)。attr('type','password');}});