我正在嘗試編寫一個簡單的腳本來模擬佔位符,以便我可以在所有瀏覽器上使用該效果。我設置的是一個帶有一些文本的表單,我絕對在輸入上定位。這就像佔位符文本一樣。使用jquery each()和children()遍歷和隱藏/聚焦表單元素
現在Jquery很簡單,如果我爲每個輸入元素寫出單獨的函數,我可以很好地工作,但這是多餘的。我想要做的是使用each()和children()和類,以便我可以將其應用於任何我想要的表單。下面的代碼:
<form id="signupForm" name="signupForm">
<span class="inputSpan">
<input value="" class="input" name="fistName" id="firstName" type="text" />
<span class="inputText" id="inputText">First name</span>
</span>
<span class="inputSpan">
<input value="" class="input" name="lastName" id="lastName" type="text" />
<span class="inputText" id="inputText">Last name</span>
</span>
</form>
<script type="text/javascript">
$('.inputSpan').each(function() {
$(this).children('.inputText').click(function(index) {
$(this).children('.inputText').hide();
$(this).children('.input').focus();
});
});
</script>
如果我把每個函數內的警報語句,它的工作原理,但它不執行它的其餘部分是隱藏子類「.inputText」並專注於其他子'.input'我猜它與一次函數內部不能再次調用$(this)有關。任何人有任何想法,我如何才能得到這個工作?
已解決!!!謝謝Matt 下面是帶有函數的最終工作代碼,用於在輸入空白時將佔位符文本放回原位。
<script type="text/javascript">
$('.inputSpan').each(function() {
var $input = $(this)
$(this).children('.inputText').click(function(index) {
$input.children('.inputText').hide();
$input.children('.input').focus();
});
$(this).children('.input').focusout(function() {
if ($input.children('.input').attr('value') == '') {
$input.children('.inputText').show();
}
});
});
</script>
@Jacob ...使用jQuery。每個()不需要 –