Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Forms 忽略ajax表单提交上的占位符值_Forms_Jquery_Placeholder - Fatal编程技术网

Forms 忽略ajax表单提交上的占位符值

Forms 忽略ajax表单提交上的占位符值,forms,jquery,placeholder,Forms,Jquery,Placeholder,我正在WordPress插件的设置页面中使用jQueryAjax表单插件。在开始使用ajax之前,我有一个脚本,它将文本输入值与占位符值进行比较,如果它们匹配,则将文本输入值设置为null。但现在我使用ajax,它不再工作了。使用jQueryAjax表单插件,我可以在beforeSerialize函数或beforeSubmit函数中传递参数。我认为这需要在beforeSerialize中完成。不管怎样,我不知道该怎么做。下面是在我切换到ajax之前运行的脚本: $('[placeholder]

我正在WordPress插件的设置页面中使用jQueryAjax表单插件。在开始使用ajax之前,我有一个脚本,它将文本输入值与占位符值进行比较,如果它们匹配,则将文本输入值设置为null。但现在我使用ajax,它不再工作了。使用jQueryAjax表单插件,我可以在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 submit(在序列化之前
或在发送之前
忽略占位符值)忽略占位符值,有什么想法吗?上面的第一个脚本是一个非常简单的常规post提交解决方案。我希望我能找到对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属性被删除时,文本实际上并没有消失,所以没有人真正聪明。我对这个还不满意,但它很管用。如果我有一个更大的形式,这将是行不通的


对更好的想法持开放态度……

好吧,我对它进行了更多的研究,找到了一种让原始代码与ajax submit一起工作的方法。其实很简单。我只需要指定要在其中搜索占位符attr的元素。这是:

        beforeSerialize: function() {
            $("#ssfa-form").find('[placeholder]').each(function() {
                var input = $(this);
                if (input.val() == input.attr('placeholder')) {
                    input.val('');
                }
            })
        },
        etc.
要跟踪问题,请参阅: