Javascript jQuery将表单序列化为JSON对象,但忽略占位符
好的,不久前我发现了这个很棒的jQuery小插件样式脚本,它将把表单中的所有字段序列化为JSON对象。然而不幸的是。我发现如果没有提供占位符文本,该函数将使用占位符文本。如果是这种情况,占位符文本就是那里的文本,我宁愿将其设置为null 你知道我该怎么把它加到这个小剪子上吗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
(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