当用户将文本输入到输入/文本区域时,我正在处理标签淡入淡出。到目前为止它运行良好,但我无法找到一个好方法来检查输入/ textarea在加载时是否具有现有值,因此我可以自动隐藏标签。
使用.load()加载输入/ textareas,这就是我使用$(document)的原因,而不是直接定义选择器。
这是一个显示我试图克服的问题的例子。任何帮助将不胜感激。此外,如果您有任何建议我如何将此功能包装到一个额外有用的插件/功能。谢谢!
http://jsfiddle.net/skyros/FTXc3/
伪代码,如果你不想去jsfiddle
//JQUERY
$(document).on('click', 'label', function() {
$(this).next().focus();
});
$(document).on('focus', 'input,textarea', function() {
var label = (this.value === "") ? $(this).prev('label').show().fadeTo(100, 0.25) : $(this).prev('label').fadeTo(100, 0).hide();
});
$(document).on('blur', 'input,textarea', function() {
var label = (this.value === "") ? $(this).prev('label').show().fadeTo(100, 1) : $(this).prev('label').fadeTo(100, 0).hide();
});
$(document).on('keypress', 'input, textarea', function() {
var label = $(this).prev('label').hide();
});
答案 0 :(得分:1)
一种方法是使用过滤函数来获取长度> gt的元素。 0然后隐藏标签
$(function(){ // on dom ready
$('label').filter(function(){
// return labels that have siblings with input val > 0
return $.trim($(this).siblings('input[type=text]').val()).length > 0;
}).hide(); // hide those labels that are returned
// or do whatever you want to do with those labels here
});
答案 1 :(得分:0)
我会改变:
$(document).on('focus', 'input,textarea', function() {
var label = (this.value === "") ? $(this).prev('label').show().fadeTo(100, 0.25) : $(this).prev('label').fadeTo(100, 0).hide();
});
到
function input_textarea_focussed() {
var label = (this.value === "") ? $(this).prev('label').show().fadeTo(100, 0.25) : $(this).prev('label').fadeTo(100, 0).hide();
};
$(document).on('focus', 'input,textarea', input_textarea_focussed());
然后添加
$(document).on('load', function() {
$("input, textarea").each(input_textarea_focussed);
});