尝试将input
类型属性从password
更改为text
。
$('.form').find('input:password').attr({type:"text"});
为什么这不起作用?
答案 0 :(得分:51)
你不能用jQuery,it explicitly forbids it来做这件事,因为IE不支持它(检查你的控制台你会看到错误。
您必须删除输入并创建一个新输入,如果这是您所追求的,例如:
$('.form').find('input:password').each(function() {
$("<input type='text' />").attr({ name: this.name, value: this.value }).insertBefore(this);
}).remove();
要明确限制,jQuery将不允许在type
或<button>
上更改<input>
,因此行为是跨浏览器一致的(因为IE不允许它,他们认为它无处不在。尝试时,您将在控制台中收到此错误:
错误:无法更改类型属性
答案 1 :(得分:48)
我的解决方案:
$('#myinput').clone().attr('type','tel').insertAfter('#myinput').prev().remove();
答案 2 :(得分:10)
我知道我的游戏有点迟了,但我只能在IE9中做到这一点(似乎微软决定允许它?)。但是,我必须使用直接的JavaScript。这只是一个带有下拉列表的表单示例,该下拉列表会根据下拉列表中的内容更改字段类型。
function switchSearchFieldType(toPassword) {
$('#SearchFieldText').val('');
if (toPassword === true) {
$('#SearchFieldText').get(0).setAttribute('type', 'password');
} else {
$('#SearchFieldText').get(0).setAttribute('type', 'text');
}
}
$('#SelectedDropDownValue').change(function () {
if ($("select option:selected").val() === 'password') {
switchSearchFieldType(true);
}
else {
switchSearchFieldType(false);
}
}).change();
答案 3 :(得分:10)
USE prop
代替attr
$('.form').find('input:password').prop({type:"text"});
答案 4 :(得分:7)
这应该很容易。
main
答案 5 :(得分:3)
它是2018年,jQuery现在支持这个功能。以下内容适用:
$('.form').find('input:password').attr("type","text");
答案 6 :(得分:0)
这里有两个函数,接受一个选择器数组作为一个参数来完成这个:
// Turn input into Number keyboard
function inputNumber(numArr) {
if (numArr instanceof Array) {
for (var i = 0; i < numArr.length; i++) {
if ($(numArr[i]).length > 0) {
var copy = $(numArr[i]);
var numEle = copy.clone();
numEle.attr("type", "number");
numEle.insertBefore(copy);
copy.remove();
}
}
}
}
// Turn input into Email keyboard
function inputEmail(emailArr) {
if (emailArr instanceof Array) {
for (var i = 0; i < emailArr.length; i++) {
if ($(emailArr[i]).length > 0) {
var copy = $(emailArr[i]);
var numEle = copy.clone();
numEle.attr("type", "number");
numEle.insertBefore(copy);
copy.remove();
}
}
}
}
然后您可以使用它:
var numberArr = ["#some-input-id", "#another-input-id"];
var emailArr = ["#some-input-id", "#another-input-id"];
inputNumber(numberArr);
inputEmail(emailArr);
答案 7 :(得分:0)
function passShowHide(){
if( $("#YourCheckBoxID").prop('checked') ){
document.getElementById("EnterPass").attributes["type"].value = "text";
}
else{
document.getElementById("EnterPass").attributes["type"].value="password";}
答案 8 :(得分:0)
这很容易。这很好用。
$('#btn_showHide').on('click', function() {
if($(this).text() == 'Show')
{
$(this).text('Hide');
$('#code').attr('type', 'text');
}
else
{
$(this).text('Show');
$('#code').attr('type', 'password');
}
});
答案 9 :(得分:0)
//Get current input object
var oldInput = $('foo');
//Clone a new input object from it
var newInput = oldInput.clone();
//Set the new object's type property
newInput.prop('type','text');
//Replace the old input object with the new one.
oldInput.replaceWith(newInput);