Gibt es eine Möglichkeit jQuery serialize Formularfelder und schneiden Sie den Wert in den Feldern zu benutzen?

StackOverflow https://stackoverflow.com/questions/218794

Frage

Ich habe eine Form, die jQuery verwendet eine Ajax-Post einreichen und es serialisiert das Formular, das oben gesendet wird. Der Code sieht wie folgt aus:

var form = $("form");
var action = form.attr("action");
var serializedForm = form.serialize();
$.post(action, serializedForm, function(data)
{
  ...
});

Das Problem hier ist, dass, wenn ein Feldleerraum hat Hinter, die Funktion Serialize diese Räume zu Plus (+) Zeichen drehen wird, wenn sie sollen entfernt werden.

Gibt es eine Möglichkeit die Felder getrimmt zu erhalten, ohne Sie folgendermaßen vorgehen:

$("#name").val( jQuery.trim( $("#name") ) );
War es hilfreich?

Lösung

Sie könnten versuchen, durch das Objekt Looping und triming alles.

//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);

Andere Tipps

Trim alle und Elementwerte im DOM:

$('input, textarea').each(function(){
    $(this).val(jQuery.trim($(this).val()));
});

Sie könnten Schleife über alle Eingänge und schneiden vor dem Absenden.

$("input, textarea").each(function(){
   $(this).val(jQuery.trim($(this).val()));
});

Ein wenig spät, aber das war wahrscheinlich das, was man wollte:

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)
{
  ...
});

Keine dieser Lösungen arbeiten, da sie tatsächlich die Felder auf der Seite Formular ändern. Ich will nur den Wert des Feldes modifizieren, dass ohne Änderung, was der Benutzer eingegeben.

Eine Sache, die Sie tun können, ist mit versteckten Werte ein separates Formular aus, und speichern Sie die tatsächlichen, getrimmt, Formularwerte in den verborgenen Werte, wenn der Benutzer sendet, dann können Sie die „versteckte“ Form serialisiert und schreiben. Nur eine Idee.

Wenn Sie ASP.NET verwenden, wo man nur ein Formular pro Seite haben, können Sie nur die Werte eines bestimmten DIV einreichen wie folgt:

var dataString = "source=contactDiv";
dataString += getDataString(divId, "input"); // add inputs
dataString += getDataString(divId, "select"); //add select elements

dann schreiben Sie das Update wie folgt:

$.post("UpdateContact.aspx",
        dataString,
        afterUpdate,
        "json");

Hilfsfunktionen

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;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top