Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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
Javascript jQuery将表单序列化为JSON对象,但忽略占位符_Javascript_Jquery_Forms_Serialization - Fatal编程技术网

Javascript jQuery将表单序列化为JSON对象,但忽略占位符

Javascript jQuery将表单序列化为JSON对象,但忽略占位符,javascript,jquery,forms,serialization,Javascript,Jquery,Forms,Serialization,好的,不久前我发现了这个很棒的jQuery小插件样式脚本,它将把表单中的所有字段序列化为JSON对象。然而不幸的是。我发现如果没有提供占位符文本,该函数将使用占位符文本。如果是这种情况,占位符文本就是那里的文本,我宁愿将其设置为null 你知道我该怎么把它加到这个小剪子上吗 (function($) { $.fn.serializeFormJSON = function() { var o = {}; var a = this.serializeArray(); $.each

好的,不久前我发现了这个很棒的jQuery小插件样式脚本,它将把表单中的所有字段序列化为JSON对象。然而不幸的是。我发现如果没有提供占位符文本,该函数将使用占位符文本。如果是这种情况,占位符文本就是那里的文本,我宁愿将其设置为null

你知道我该怎么把它加到这个小剪子上吗

(function($) {
$.fn.serializeFormJSON = function() {

   var o = {};
   var a = this.serializeArray();
   $.each(a, function() {
       if (o[this.name]) {
           if (!o[this.name].push) {
               o[this.name] = [o[this.name]];
           }
           o[this.name].push(this.value || '');
       } else {
           o[this.name] = this.value || '';
       }
   });
   return o;
};
})(jQuery);
编辑:
换句话说,占位符属性可能类似于
placeholder=“First name”
,javascript在获取输入时似乎将其视为实际值。因此,我得到一个名字字段(可选)作为“名字”的条目。因此,我想弄清楚如何比较上面的剪报所在的当前字段,并让它看到该字段的当前占位符(如果有,因为选择之类的东西没有该属性)。如果所拉取的值与占位符属性匹配,我想将该字段添加到正在创建的对象中,但作为
null
而不是占位符文本,您可以修改DOCTYPE以允许在输入标记上使用自定义属性(如果您关心标准)(或者只需将该属性称为“data xxx”)“数据占位符值”,然后添加占位符值作为值和“占位符值”(例如),然后JS可以检查
value==placeholderValue
,然后忽略它

例如:

HTML:

<input id="test" type="text" value="Please enter blah" placeholder="Please enter blah" />
var element=$('#test');
if(element.val == element.attr('placeholder')) {
  element.val(''); // Or however you want to express/capture this.
}

为什么不在序列化之前清除占位符呢

function clearPlaceHolders(){
 var form = document.GetElementById("formId");
 $(form).find("input").each(function(index,el){
  el.removeAttribute("placeholder");
 }
}

查看此示例:

如果您在HTML中引用占位符属性,我可以相当肯定占位符属性是作为.placeholder而不是.value公开的


您是使用占位符属性还是使用脚本在值中交换占位符?

您是说要排除空值而不是将其转换为空字符串,还是要使用字符串
null
作为值?我想他指的是“请在此处输入您的姓名”之类的值"基本上,如果找到的值与占位符相同,我想将其标记为
null
无法复制,您必须使用一个库,该库正在通过将
占位符
属性放置在输入值中来处理这些属性。这不是标准。您使用的插件是什么?我是我们在输入本身上设置实际的
placeholder=“
属性,没有脚本交换哦,有一个官方的占位符属性?太棒了!我会修改我的代码。这可能会起作用,但是我没有使用占位符的
data
属性来交换值,我使用的是HTML5规范
placeholder=“”
作为实际输入的一部分,我需要编写一个与您的示例集成的版本。但是我不太确定push etc位实现了什么,但希望您可以接受逻辑并使用它运行。我要睡觉了。选择器可以是
“[name]”
(定义了
name
属性的所有元素),以匹配“插件":PWell不完全是我要找的,但已经够近了。由于帖子本身的评论,我意识到问题是由于模板作者在幕后用其中一个脚本进行了欺骗。但是,由于我不想从脚本中删除该脚本,其他人可能会因为类似的问题来寻找h,这是一个最符合原始问题整体需求的答案。我最终会将此作为我的工作:-D