我在WordPress插件的设置页面中使用了jQuery ajax表单插件。在我开始使用ajax之前,我有一个脚本将文本输入值与占位符值进行比较,如果匹配,则将文本输入值设置为null。但是现在我不再使用ajax了。使用jQuery ajax表单插件,我可以在beforeSerialize函数或beforeSubmit函数中传递参数。我认为需要在beforeSerialize中完成。无论如何,我不知道如何使这项工作。这是在我切换到ajax之前正在运行的脚本:
$('[placeholder]').focus(function() {
var input = $(this);
if (input.val() == input.attr('placeholder')) {
input.val('');
input.removeClass('placeholder');
}
}).blur(function() {
var input = $(this);
if (input.val() == '' || input.val() == input.attr('placeholder')) {
input.addClass('ssfa-placeholder');
input.val(input.attr('placeholder'));
}
}).blur().parents('form').submit(function() {
$(this).find('[placeholder]').each(function() {
var input = $(this);
if (input.val() == input.attr('placeholder')) {
input.val('');
}
})
});
这是我目前的ajax表单提交脚本:
var svn = $("#ssfa-saving"),
bck = $("#ssfa-saving-backdrop"),
svd = $("#ssfa-settings-saved");
$("#ssfa-form").ajaxForm({
beforeSend: function() {
svn.fadeIn('slow');
bck.fadeIn('fast');
},
success: function(){
svn.fadeOut('slow');
svd.delay(1000).fadeIn('slow').delay( 2500 ).fadeOut('slow');
bck.delay( 4500 ).fadeOut('slow');
}
});
有关如何获取ajax提交(beforeSerialize
或beforeSend
)忽略占位符值的任何想法?上面的第一个脚本是一个非常简单的常规帖子提交解决方案。我希望我能找到像ajax一样简单的东西。
更新
我找到了一种基本的方法,但它涉及调用每个具有占位符的文本字段,所以它不像原始脚本那样优雅,但这是有用的:
$("#ssfa-form").ajaxForm({
beforeSerialize: function() {
var permex = $('input#exclusions');
$('input[id^=bs]').each(function(){
var bs = $(this);
if (bs.val() === 'Display Name')
bs.removeAttr('value');
});
$('input[id^=custom_]').each(function(){
var cs = $(this);
if (cs.val() === 'classname1|Display Name 1, classname2|Display Name 2')
cs.removeAttr('value');
});
if (permex.val() === '.avi, My Embarrasing Photograph, .tif')
permex.removeAttr('value');
},
beforeSend: function() {
etc.
由于它是一个占位符文本,当删除value属性时,文本实际上不会消失,所以没有人真的更聪明。我没有在这个月亮,但它的工作原理。如果我有一个更大的形式,这将是不可行的。
向更好的想法开放......
答案 0 :(得分:0)
好吧,我玩了很多,并找到了一种方法来让原始代码与ajax提交一起使用。实际上这很简单。我只需要指定搜索占位符attr的元素。这是:
beforeSerialize: function() {
$("#ssfa-form").find('[placeholder]').each(function() {
var input = $(this);
if (input.val() == input.attr('placeholder')) {
input.val('');
}
})
},
etc.
要跟踪问题,请参阅:
https://github.com/mathiasbynens/jquery-placeholder/issues/30 https://github.com/mathiasbynens/jquery-placeholder/issues/197