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

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

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();

看你的方法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小白,我就不写进去了,省的绕晕你。


$('#rmkey')的返回值是jquery对象,而jquery对象是没有setDefaultText这个方法的,当然调用不到。

【热门文章】
【热门文章】