項目中遇到的問題,試了幾種方法,今天整理出來,若是有不合適的地方,但願你們多多提意見。javascript
<!doctype html> <html> <head> <meta charset="utf-8"> <script type="text/javascript" src="jquery-1.10.2.min.js"></script> <title></title> <style type="text/css" media="screen"> .inp {color: #666;} </style> </head> <body> <input name="" datavalue="輸入文字" class="ipt"> </body> <script type="text/javascript"> $(function(){ function placeholder(target){ $(target).val($(target).attr("datavalue")).addClass("inp"); $(target).focus(function() { if($(this).val() == $(this).attr("datavalue")) { $(this).val("").removeClass("inp"); } }) $(target).blur(function(){ if($(this).val() == "" || $(this).val() == $(this).attr("datavalue")) { $(this).val($(target).attr("datavalue")).addClass("inp"); } }) } placeholder(".ipt") }) </script> </html>
在上述的代碼中,我將主要實現的代碼封裝了一個方法,所以等到下次再要使用的時候,能夠直接調用placeholder(".ipt")這個函數便可,輸入input的class值。
說明一下:.inp這個class,是爲了實現和placeholder同樣的顯示效果。當使用的是placeholder提示的話,字體得顏色是#666的。css
<!doctype html> <html> <head> <meta charset="utf-8"> <script type="text/javascript" src="jquery-1.10.2.min.js"></script> <title></title> <style type="text/css" media="screen"> .spn {position: absolute;font-size: 14px;left: 10px;top: 9px;display: none;color:#666;} </style> </head> <body> <input type="text" name="" placeholder="輸入文字" class="ipt"> <span class="spn">輸入文字</span> </body>
<script type="text/javascript"> $(function(){ function placeholder(target){ var browser=navigator.appName var b_version=navigator.appVersion var version=b_version.split(";"); var trim_Version=version[1].replace(/[ ]/g,""); if(browser=="Microsoft Internet Explorer" && trim_Version=="MSIE7.0" || browser=="Microsoft Internet Explorer" && trim_Version=="MSIE8.0" || browser=="Microsoft Internet Explorer" && trim_Version=="MSIE9.0") { $(target).siblings("span").show(); $(target).focus(function() { $(this).siblings("span").hide(); }) $(target).blur(function(){ if($(this).val() == "") { $(this).siblings("span").show(); } }) } } placeholder(".ipt") }) </script>
</html>
<!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8"> <script type="text/javascript" src="jquery-1.10.2.min.js"></script> <style type="text/css"> .phcolor{ color:#666;} .box {position:relative;font-size: 14px;} .box span{position: absolute;left: 0px;font-size: 14px;display: none;} </style> </head> <body> <div class="box"> <input class="ipt" placeholder="輸入文字" type="text"></input> <span class="ipt_abs">輸入文字</span> </div> </body> <script type="text/javascript"> $(function(){ //判斷瀏覽器是否支持placeholder屬性 supportPlaceholder='placeholder'in document.createElement('input'); placeholder=function(input){ var text = input.attr('placeholder'); defaultValue = input.defaultValue; if(!defaultValue){ input.val(text).addClass("phcolor"); } input.focus(function(){ if(input.val() == text){ $(this).val(""); } }) input.blur(function(){ if(input.val() == ""){ $(this).val(text).addClass("phcolor"); } }); //輸入的字符不爲灰色 input.keydown(function(){ $(this).removeClass("phcolor"); }) } //當瀏覽器不支持placeholder屬性時,調用placeholder函數 if(!supportPlaceholder){ $('input').each(function(){ text = $(this).attr("placeholder"); if($(this).attr("type") == "text"){ placeholder($(this)); } }) } }) </script> </html>
結束語:這幾種方法是目前親測過,第一種以及第二種是比較合適的方法,第三種方法,樓主感受仍是有一點問題,但願你們測出來問題的,及時與我聯繫哈。
第二種實現方法也是能夠運行的,可是上次作項目的時候,不知道爲何,單個的頁面運行都沒有問題,放到項目中的話,就會對別的功能形成影響,一直運行不了。所以樓主才從新想了第一種方法。不過第一種方法也是挺好用的。但願你們多多提意見哈html