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
这个方法的,当然调用不到。