4

jQueryを使用してajax投稿を送信するフォームがあり、送信されたフォームをシリアル化します。コードは次のようになります。

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

ここでの問題は、フィールドに末尾の空白がある場合、シリアル化関数はそれらのスペースを削除する必要があるときにプラス(+)記号に変換することです。

次の手順を実行せずにフィールドをトリミングする方法はありますか?

$("#name").val( jQuery.trim( $("#name") ) );
4

8 に答える 8

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);
于 2008-10-20T18:07:36.957 に答える
7

DOM 内のすべての<input>要素と<textarea></textarea>要素の値を削除します。

$('input, textarea').each(function(){
    $(this).val(jQuery.trim($(this).val()));
});
于 2008-10-20T16:16:28.460 に答える
2

少し遅れましたが、これはおそらくあなたが望んでいたものでした:

var form = $("form");
var action = form.attr("action");
var formArr = form. serializeArray();
$.each(formArr , function(i, field) {
  formArr[i].value = $.trim(field.value);
});
var serializedForm = $.param(formArr);
$.post(action, serializedForm, function(data)
{
  ...
});
于 2009-09-03T16:58:15.710 に答える
1

送信する前に、すべての入力をループしてトリムすることができます。

$("input, textarea").each(function(){
   $(this).val(jQuery.trim($(this).val()));
});
于 2008-10-20T16:17:49.487 に答える
0

あなたができることの1つは、非表示の値を持つ別のフォームを作成し、ユーザーが送信したときに実際のトリミングされたフォームの値を非表示の値に保存してから、「非表示」フォームをシリアル化して投稿することです。ただのアイデア。

于 2008-10-20T18:40:47.407 に答える
0

ページのフォーム フィールドを実際に変更するため、これらのソリューションはどちらも機能しません。ユーザーが入力した内容を変更せずに、フィールドの値を変更したいだけです。

于 2008-10-20T16:53:56.887 に答える
0

ページごとに 1 つのフォームしか持てない 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;
}
于 2009-01-12T16:26:49.953 に答える