js修改input的type属性及浏览器兼容问题探讨与解决_javascript技巧

js修改input的type属性有些限制。当input元素还未插入文档流之前,是可以修改它的值的,在ie和ff下都没问题。但如果input已经存在于页面,其type属性在ie下就成了只读属性了,不可以修改。在ff下仍是可读写属性。

今天遇到个问题,输入框有默认值“密码”,但获得焦点时,“密码”两字会去掉,输入时直接变成”****“的password类型。很明显,一开始的时候,input的类型是text,后来变成了password类型。直观的思路是用js修改input的type类型。但ie下这么做不可行,所以只能换个思路,写两个input,一个text类型,一个password类型,分得监听onfocus和onblur事件。如下:

复制代码 代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>钱运来|qianyunlai.com制作</title>
</head>
<style type="text/css">
</style>
<body>
<input name="" type="text" value="密码" class="inputText_1" id="tx" style="width:100px;" />
<input name="" type="password" style="display:none;width:100px;" id="pwd" />
<script type="text/javascript">
var tx = document.getElementById("tx"), pwd = document.getElementById("pwd");
tx.onfocus = function () {
if (this.value != "密码")
return;
this.style.display = "none";
pwd.style.display = "";
pwd.value = "";
pwd.focus();
}
pwd.onblur = function () {
if (this.value != "")
return;
this.style.display = "none";
tx.style.display = "";
tx.value = "密码";
}
</script>
</body>
</html>

时间: 2024-11-02 17:49:00

js修改input的type属性及浏览器兼容问题探讨与解决_javascript技巧的相关文章

js修改input的type属性问题探讨_javascript技巧

js修改input的type属性有些限制.当input元素还未插入文档流之前,是可以修改它的值的,在ie和ff下都没问题.但如果input已经存在于页面,其type属性在ie下就成了只读属性了,不可以修改.在ff下仍是可读写属性. 今天遇到个问题,输入框有默认值"密码",但获得焦点时,"密码"两字会去掉,输入时直接变成"****"的password类型.很明显,一开始的时候,input的类型是text,后来变成了password类型.直观的思路是

ie8下修改input的type属性报错的解决方法_javascript技巧

摘要: 现在有一个需求如图所示,当用户勾选显示明文复选框时,要以明文显示用户输入的密码,去掉勾选时要变回密文,刚开始想到的就是修改输入框的type来决定显示明文还是密文,使用jQuery的attr来做试验,测试结果是chrome,Firefox,ie9+都是好的,在ie8以下就会报错,查找了下原因,ie8中是不允许修改input的type属性,最终换了种思路实现. 当勾选显示明文时替换输入框为type="text",不勾选时在将输入框替换为type="password&quo

谈谈JavaScript中浏览器兼容问题的写法小议_javascript技巧

前言 JavaScript中很多坑,其中对浏览器的兼容也是一个问题,本文就简略的归纳了部分针对浏览器兼容问题的写法的例子,旨在便于查找.如果读者有什么好的意见建议,请留言交流,谢谢! window窗口大小 1.在IE9+.Chrome.Firefox.Opera以及Safari中 window.innerHeight获取浏览器窗口的内部高度 window.innerWidth获取浏览器窗口的内部宽度 var msg = "窗口宽度:" + window.innerHeight + &q

js实现iframe框架取值的方法(兼容IE,firefox,chrome等)_javascript技巧

本文实例讲述了js实现iframe框架取值的方法.分享给大家供大家参考,具体如下: 为啥世上会有这么多不同的浏览器?每次遇到js/css的浏览器兼容性问题,总是要发出这样的感叹,真希望这些个浏览器公司全部倒下,然后只留下一家(显然这是一个不可能实现的美好愿望),言归正传,看代码吧: iframe框架内页: <html> <head> <title>框架内页</title> </head> <body> <div> <

为JS扩展Array.prototype.indexOf引发的问题探讨及解决_javascript技巧

Array没有indexOf方法,这样在一个数组中查找某个元素的索引时比较麻烦,为了调用方便,于是通过prototype原型扩展了Array.prototype.indexOf(),这样用起来就比较方便了.但是这个自定义的indexOf在对数组进行遍历的时候却出现了问题. Array没有indexOf方法,这样在一个数组中查找某个元素的索引时比较麻烦,为了调用方便,于是通过prototype原型扩展了Array.prototype.indexOf(),这样用起来就比较方便了. 复制代码 代码如下

js文本框输入点回车触发确定兼容IE、FF等_javascript技巧

复制代码 代码如下: <head> <script> function EnterPress(e){ //传入 event var e = e || window.event; if(e.keyCode == 13){ document.getElementById("txtB").focus(); } } </script> </head> <body> <input type="text" id=

Selenium web driver 使用JS修改input属性

selenium获取input时候,发现type="hidden" 的input无法修改value,经牛人指点,可以使用js修改 首先html源文件如下,设置为text .hidden.submit View Code 在浏览器加载之后如下: 这时候email 不能对外显示 使用selenium,代码如下 1 import org.openqa.selenium.Alert; 2 import org.openqa.selenium.JavascriptExecutor; 3 impo

html5 input的type属性启动数字输入法

   当文本框只能输入数字是一个很常见的需求,比如电话号码,身份证号,卡号, 数量....等等只允许数字输入,为了更好的用户体验性,直接写出 启动数字键盘的需求,我和大多数人一样用this.style.imeMode='disabled'; imeMode有四种形式,分别是: active 代表输入法为中文 inactive 代表输入法为英文 auto 代表打开输入法 (默认) disable 代表关闭输入法 发现在Android手机上是不行的. 解决办法:html5里的 input 的type

js清除input中type等于file的值域

 本篇文章主要介绍了js清除input中type等于file的值域(示例代码) 需要的朋友可以过来参考下,希望对大家有所帮助 如下所示; var objFile = document.getElementById('fileID'); objFile.outerHTML=objFile.outerHTML.replace(/(value=").+"/i,"$1"");