JS 动态修改 input 的 type 属性
来源:互联网 发布:国家知识产权局知乎 编辑:程序博客网 时间:2024/06/05 07:03
很久没来部落格了,杂草丛生广告横行啊!工作比以前轻松很多人却越来越懒了…… 最近做一个登陆框,当鼠标焦点放在两个输入框上面的时候将输入框置空,简单说就是清除输入框的默认值,如图
这里写了一个jQuery对象方法的插件
- (function($) {
- jQuery.fn.extend({
- “clearDefault”:function(className){
- $(this).focus(function(){
- if (className) {
- $(this).addClass(className);
- }
- if($(this).val() ==this.defaultValue){
- $(this).val(“”);
- }
- }).blur(function(){
- if (className) {
- $(this).removeClass(className);
- }
- if ($(this).val() == ”) {
- $(this).val(this.defaultValue);
- }
- });
- }
- });
- })(jQuery);
调用: $(“#uname”); 可选参数class为获取焦点时input的class,但是清除密码的时候出了一个问题,用户输入的密码应该是 ”*****” ,这里需要将input 的type 属性由 text 换成 password ,如果用户没有输入密码,鼠标失去焦点的时候 type 换回 text ,value 值为 “密码”。
- $(“#pswd”).focus(function(){
- $(this).attr(‘type’,'password’);
发现并没有实现预期效果,出现 uncaught exception type property can’t be changed 错误,查看jQuery 1.42源码 1488 行
- // We can’t allow the type property to be changed (since it causes problems in IE)
- if ( name === “type” && rtype.test( elem.nodeName ) && elem.parentNode ) {
- jQuery.error( “type property can’t be changed” );
jQuery 修改不了用源生的JS呢?
- $(“#pwd”).focus(function(){
- $(“#pwd”)[0].type = ’password’;
- $(“#pwd”).val(“”);
- });
发现在FF下可以修改并将密码输入框type 修改为 “password” 并将 value设置为空,而IE下却提示无法得到type属性,不支持该命令。 弹出 type 看看真的无法得到吗?
- $(“#pwd”).focus(function(){
- alert($(“#pwd”)[0].type);
- $(“#pwd”)[0].type = ’password’;
- $(“#pwd”).val(“”);
- });
发现弹出text ,原来不是无法得到,只是IE下不能修改。 各种 google 后发现input的type属性只能在初始的时候设定却不能修改(IE不能,FF可以,个人认为,不知道是否准确,如有不对请大牛指教)。 这样我是否可以先remove然后再生成一个type是password的密码输入框呢?
- $(“#pwd”).focus(function(){
- $(“#pwd”).remove();
- $(“body”).append(‘<input id=“pwd” name=“pwd” type=“password” />’);
- $(“#pwd”).focus(); // 焦点转移
- });
可以实现,但是输入为空鼠标失去焦点再返回到起始状态的时候不怎么好写,节点生成删除为什么不用两个密码框来显示隐藏呢?
- <input id=“showPwd” class=“txt” type=“text” value=“密码” tabindex=“2″ />
- <input id=“pwd” class=“txt” name=“password” type=“password” />
- var showPwd = $(“#showPwd”), pwd = $(“#pwd”);
- showPwd.focus(function(){
- pwd.show().focus();
- showPwd.hide();
- });
- pwd.blur(function(){
- if(pwd.val()==“”) {
- showPwd.show();
- pwd.hide();
- }
- });
完美解决。
- JS 动态修改 input 的 type 属性
- JS 动态修改 input 的 type 属性
- js修改input的type属性问题探讨
- 修改input输入框的type属性
- js改变input的type属性
- 用JS替 <input type=file>的value属性动态赋值
- 动态修改html input标签的属性
- 修改input的type属性的几种方法
- 【CRM项目】jQuery修改input的type属性失败
- 动态改变input type属性的变通方法
- js无法强制修改input type=file的value
- js为修改input属性
- 更改input的type属性
- 如何动态改变input type=submit 的type属性为button
- js中动态变更select为input,以及input的type类型从hidden变为text
- jQuery修改input输入框type属性时报错的处理
- HTML <input> 标签的 type 属性
- HTML <input> 标签的 type 属性
- 转载和积累系列 - nodejs服务器端开发
- 使用递归下降算法分析数学表达式 -- 基于堆栈的计算器实现算法
- Http和Socket区别
- 英语练习39 A wonderful time
- __attribute__机制介绍
- JS 动态修改 input 的 type 属性
- imageNamed 与 imageWithContentsOfFile的区别
- 信号量和自旋锁的差别 .
- android 多线程断点下载实现
- android listview改变选中行字体颜色
- Java线程(十一):CountDownLatch-线程并发的发令枪
- NetBeans的(默认)快捷键
- getter和setter方法
- 黑马程序员----集合类(二)