Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在IE中将输入类型从密码更改为文本而不使用cloneNode_Javascript_Jquery_Html - Fatal编程技术网

Javascript 在IE中将输入类型从密码更改为文本而不使用cloneNode

Javascript 在IE中将输入类型从密码更改为文本而不使用cloneNode,javascript,jquery,html,Javascript,Jquery,Html,我的用例是显示一个用于输入信用卡号的文本框,默认情况下它应该被屏蔽。然后,我会有一个复选框,点击上面的文本框应该取消对creditCardNumber的屏蔽 我可以使用jQuery实现这一点,但是每当选中复选框时,我就会遇到Spring绑定问题。选中复选框时,它不接受最新值 更改复选框后,我将从就绪函数调用此函数: $("#showCardNumber").change (function(){ unmaskCreditCardTxtBox($(this));

我的用例是显示一个用于输入信用卡号的文本框,默认情况下它应该被屏蔽。然后,我会有一个复选框,点击上面的文本框应该取消对creditCardNumber的屏蔽

我可以使用jQuery实现这一点,但是每当选中复选框时,我就会遇到Spring绑定问题。选中复选框时,它不接受最新值

更改复选框后,我将从就绪函数调用此函数:

    $("#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或文章中已经做过的事情?