今天寫了一個表單元素,在用戶點擊的時候會清空input中的內容,當鼠標點擊其他地方的時候會把輸入的值保存為input的value值
類似於這樣的效果
當用戶點擊的時候文字消失。
html代碼
<input type="text" name="" value="請輸入您的郵箱地址"/> <input type="text" name="" value="請輸入用戶名"/> <input class="pwd" type="text" name="" value="請輸入密碼"/> <input class="pwd" type="text" name="" value="確認密碼"/>jq代碼
<script type="text/javascript"> $(document).ready(function(e) { var temp; $(":text").focusin(function(){ var value = $(this).val(); if ($(this).val() == "請輸入密碼" || $(this).val() == "請輸入您的郵箱地址" || $(this).val() == "確認密碼" || $(this).val() =="請輸入用戶名") { if($(this).val() == "確認密碼" || $(this).val() == "請輸入密碼") { $(this).attr('type','password') } $(this).val("") } //alert(value) }) $(":input").focusout(function(event) { /* Act on the event */ if($(this).val() == "") { if ($(this).hasClass('pwd')) { $(this).attr('type','text') }; $(this).val(temp) } }); }) </script>
這樣之后基本所要求的功能可以實現,但是發現代碼不夠優雅,於是又想到了可以使用數組來保存value值,
var arr_ = []; var temp; $(":text").each(function() { arr_.push($(this).val()) }) $(":text").focusin(function(){ var that = this; var value = $(that).val(); temp = value; $.each(arr_,function(i,n) { if(value==n){ $(that).val(""); if(value=="請輸入密碼"||value=="確認密碼"){ $(that).attr("type","password"); } } }); })
又發現了一個問題, 總是需要一個全局變量temp來保存value值,這對於javascript來說是不好的,於是乎又想到了data屬性
<input type="text" name="" data="請輸入您的郵箱地址" value="請輸入您的郵箱地址"/> <input type="text" name="" data="請輸入用戶名" value="請輸入用戶名"/> <input class="pwd" type="text" data="請輸入密碼" name="" value="請輸入密碼"/> <input class="pwd" type="text" data="確認密碼" name="" value="確認密碼"/>
$(document).ready(function(e) { var arr_ = []; $(":text").each(function() { arr_.push($(this).val()) }) $(":text").focusin(function(){ var that = this; var value = $(that).val(); $.each(arr_,function(i,n) { if(value==n){ $(that).val(""); if(value=="請輸入密碼"||value=="確認密碼"){ $(that).attr("type","password"); } } }); }) $(":input").focusout(function(event) { /* Act on the event */ if($(this).val() == "") { if ($(this).hasClass('pwd')) { $(this).attr('type','text') }; $(this).val($(this).attr("data")); } }); })
這樣便看起來舒服多了。