我有一个使用jQuery提交ajax帖子的表单,它序列化了发送的表单。代码如下所示:
var form = $("form");
var action = form.attr("action");
var serializedForm = form.serialize();
$.post(action, serializedForm, function(data)
{
...
});
这里的问题是,如果一个字段有尾随空格,那么当它们被剥离时,序列化函数会将这些空格转换为加号(+)。
有没有办法让字段修剪,不用执行以下操作:
$("#name").val( jQuery.trim( $("#name") ) );
答案 0 :(得分:10)
您可以尝试循环浏览对象并修剪所有内容。
//Serialize form as array
var serializedForm = form.serializeArray();
//trim values
for(var i =0, len = serializedForm.length;i<len;i++){
serializedForm[i] = $.trim(serializedForm[i]);
}
//turn it into a string if you wish
serializedForm = $.param(serializedForm);
答案 1 :(得分:6)
修剪DOM中的所有&lt; input&gt; 和&lt; textarea&gt;&lt; / textarea&gt; 元素值:
$('input, textarea').each(function(){
$(this).val(jQuery.trim($(this).val()));
});
答案 2 :(得分:1)
您可以在提交之前循环所有输入和修剪。
$("input, textarea").each(function(){
$(this).val(jQuery.trim($(this).val()));
});
答案 3 :(得分:1)
有点晚了,但这可能是你想要的:
var form = $("form");
var action = form.attr("action");
var formArr = form. serializeArray();
jQuery.each(formArr , function(i, field) {
formArr[i].value = $.trim(field.value);
});
var serializedForm = $.param(formArr);
$.post(action, serializedForm, function(data)
{
...
});
答案 4 :(得分:0)
这些解决方案都不起作用,因为它们实际上更改了页面上的表单字段。我只是想修改字段的值而不改变用户键入的内容。
答案 5 :(得分:0)
您可以做的一件事是拥有一个带有隐藏值的单独表单,并在用户提交时将实际的,修剪过的表单值存储在隐藏值中,然后您可以序列化“隐藏”表单并发布。只是一个想法。
答案 6 :(得分:0)
如果您使用的是每页只能有一个表单的ASP.NET,则只能按如下方式提交给定DIV的值:
var dataString = "source=contactDiv";
dataString += getDataString(divId, "input"); // add inputs
dataString += getDataString(divId, "select"); //add select elements
然后发布更新如下:
$.post("UpdateContact.aspx",
dataString,
afterUpdate,
"json");
帮助函数
function afterUpdate(data){
//add some post-update info
}
function getDataString(divId, tagName) {
var data = "";
var elements = $("#" + divId + " " + tagName);
for (var i = 0; i < elements.length; i++) {
var el = elements[i];
var name = el.name;
var value = $(el).val();
if (value != null && value != "undefined")
value = $.trim(value + ""); //added "" to fix IE 6 bug for empty select
if (el.type == "checkbox")
value = el.checked;
else if (el.type == "radio" && !el.checked)
value = "";
if (!(value == "" || value == "undefined" || name == "" || name == "undefined"))
data += "&" + name + "=" + escape(value);
}
return data;
}
答案 7 :(得分:0)
如果您已经包含了jquery文件,请使用此脚本
var formFilters = $('input, textarea');
formFilters.each(function(){
$(this).val($(this).val().trim());
});