您好,匿名用户
随意问技术百科期待您的加入

input默认文本不更改时,清空默认文本的方法,怎样将其方法化呢?

0 投票

html结构如下:
<input type="text" value="输入新浪微博用户名" id="rmkey" class="vAllIcon input">
我想实现当鼠标第一次点击时,如值未发生改变的话,将默认的文本清空。如果发现改变就显示已经输入后的文本,
现在单个对网站应用是没问题,但现在很多地方需要应用,我想将其改为方法,但按照下放的方法,结果未能正常调用。那位能告知错在那里么
JS部分的代码如下:
单个应用时的代码:

var defaultText = $("#rmkey").val();

	$("#rmkey").bind('focus', function(){
		
		if ($(this).val() == defaultText) {
			$(this).val('');
		}
	});
		 
	$("#rmkey").bind('blur', function(){
		
		if ($(this).val() == '') {
			$(this).val(defaultText)
		}
	});

//自己写的默认文字的方法

	function setDefultText(tagName){
		
		var defaultText = tagName.val();

		tagName.bind('focus', function(){
			
			if ($(this).val() == defaultText) {
				$(this).val('');
			}
		});
			 
		tagName.bind('blur', function(){
			
			if ($(this).val() == '') {
				$(this).val(defaultText)
			}
		});
	}
	$('#rmkey').setDefultText();
用户头像 提问 2013年 12月19日 @ Scorpio 上等兵 (220 威望)
分享到:

1个回答

0 投票

看你的方法tagName直接调用了val,应该是个jquery对象,所以直接这样写是可以

  setDefaultText($('#rmkey'));

不过我建议你这么写,写到jquery里

$.fn.setDefultText = function () {
  var tagName = $(this);
  var defaultText = tagName.val();
  tagName.bind('focus', function(){
    if ($(this).val() == defaultText) {
      $(this).val('');
    }
  });
  tagName.bind('blur', function(){
    if ($(this).val() == '') {
      $(this).val(defaultText)
    }
  });
}

然后可以像你那样直接调用。

 $('#rmkey').setDefultText();

另外如果要连缀jquery方法,还得返回this。如果选择的不是一个,而需要选择多个,一次绑定的话,可以加上this.each,遍历一遍。不过你说你是js小白,我就不写进去了,省的绕晕你。

用户头像 回复 2013年 12月27日 @ Orianna 上等兵 (193 威望)
提一个问题:

相关问题

0 投票
1 回复 34 阅读
0 投票
1 回复 37 阅读
0 投票
1 回复 28 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...