Tôi đang cố viết một kịch bản đơn giản mô phỏng trình giữ chỗ để tôi có thể sử dụng hiệu ứng trên tất cả các trình duyệt. Những gì tôi thiết lập là một hình thức với một khoảng với một số văn bản trong nó mà tôi hoàn toàn vị trí trên đầu vào. Thao tác này giống như văn bản trình giữ chỗ.Sử dụng Jquery mỗi() và trẻ em() để di chuyển và ẩn/lấy nét các thành phần biểu mẫu
Bây giờ Jquery là dễ dàng, và nếu tôi viết ra các chức năng riêng lẻ cho mỗi yếu tố đầu vào tôi làm cho nó hoạt động tốt, nhưng đó là loại dự phòng. Những gì tôi đang cố gắng làm là sử dụng mỗi() và trẻ em() và các lớp học để tôi có thể áp dụng điều này cho bất kỳ hình thức tôi muốn. Dưới đây là các mã:
<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>
Nếu tôi đặt một tuyên bố cảnh báo trong mỗi chức năng, nó hoạt động, nhưng nó không phải thực hiện phần còn lại của nó mà là để ẩn các lớp con '.inputText' và tập trung vào đứa trẻ khác '.input' Tôi đoán nó có một cái gì đó để làm với không thể gọi $ (này) một lần nữa một lần bên trong một chức năng. Bất cứ ai có bất kỳ ý tưởng về làm thế nào tôi có thể nhận được điều này để làm việc?
Đã giải quyết !!! Cảm ơn Matt Đây là mã làm việc cuối cùng có chức năng đặt văn bản giữ chỗ lại tại chỗ nếu đầu vào được để trống.
<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 ... bằng jQuery.mỗi() là không cần thiết –