Javascript 在IE中将输入类型从密码更改为文本而不使用cloneNode
我的用例是显示一个用于输入信用卡号的文本框,默认情况下它应该被屏蔽。然后,我会有一个复选框,点击上面的文本框应该取消对creditCardNumber的屏蔽 我可以使用jQuery实现这一点,但是每当选中复选框时,我就会遇到Spring绑定问题。选中复选框时,它不接受最新值 更改复选框后,我将从就绪函数调用此函数:Javascript 在IE中将输入类型从密码更改为文本而不使用cloneNode,javascript,jquery,html,Javascript,Jquery,Html,我的用例是显示一个用于输入信用卡号的文本框,默认情况下它应该被屏蔽。然后,我会有一个复选框,点击上面的文本框应该取消对creditCardNumber的屏蔽 我可以使用jQuery实现这一点,但是每当选中复选框时,我就会遇到Spring绑定问题。选中复选框时,它不接受最新值 更改复选框后,我将从就绪函数调用此函数: $("#showCardNumber").change (function(){ unmaskCreditCardTxtBox($(this));
$("#showCardNumber").change (function(){
unmaskCreditCardTxtBox($(this));
});
function unmaskCreditCardTxtBox(jqCheckBox){
$("#creditCardNumber").each(
function(){
var oldbox = $(this);
var boxtype = 'password';
if(checkBoxIsChecked(jqCheckBox)) {
boxtype = 'text';
}
swapCreditCardTextBox(oldbox, boxtype);
}
);
}
function swapCreditCardTextBox(oldbox, boxtype){
var newbox = $("<input></input>");
newbox.attr('id',oldbox.attr('id'));
newbox.attr('name',oldbox.attr('name'));
newbox.attr('type',boxtype);
newbox.attr('maxlength', oldbox.attr('maxlength'));
newbox.attr("class", oldbox.attr("class"));
newbox.val(oldbox.val());
newbox.attr("className",oldbox.attr("className"));
oldbox.replaceWith(newbox);
}
function checkBoxIsChecked(jqCheckBox) {
return jqCheckBox.is(":checked");
}
$(“#showCardNumber”).change(函数(){
取消显示CreditCardTXTBOX($(此));
});
函数unmaskCreditCardTxtBox(jqCheckBox){
美元(“#信用卡号”)。每个(
函数(){
var oldbox=$(这是);
var-boxtype=‘密码’;
如果(复选框已选中(jqCheckBox)){
boxtype='text';
}
swapCreditCardTextBox(oldbox,boxtype);
}
);
}
函数swapCreditCardTextBox(oldbox,boxtype){
var newbox=$(“”);
newbox.attr('id',oldbox.attr('id');
newbox.attr('name',oldbox.attr('name');
newbox.attr('type',boxtype);
newbox.attr('maxlength',oldbox.attr('maxlength');
newbox.attr(“类”,oldbox.attr(“类”);
newbox.val(oldbox.val());
newbox.attr(“className”,oldbox.attr(“className”);
旧盒子。替换为(新盒子);
}
功能检查框已检查(jqCheckBox){
返回jqCheckBox.is(“:checked”);
}
不接受该值的原因是您正在创建一个全新的对象来替换旧对象。您所需要的只是:
$('#creditCardNumber').get(0).type = 'text';
您可以在复选框的change
事件中处理此问题
如果您只需执行以下操作,它也会起作用:
$('#creditCardNumber').attr('type', 'text');
如果你能提供HTML和Javascript代码,说明你在Fidle或文章中已经做过的事情?