هل هناك طريقة لاستخدام مسج هو تسلسل حقول النموذج وتقليم القيمة في الحقول ؟

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

سؤال

لدي نموذج يستخدم مسج لتقديم اياكس بعد ذلك serializes النموذج الذي أرسله.رمز يبدو مثل هذا:

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

المشكلة هنا هو أنه إذا كان الحقل يحتوي على مسافة زائدة ، تسلسل وظيفة سوف تتحول تلك المساحات إلى زائد (+) علامات ، ومتى ينبغي تجريده.

هل هناك طريقة للحصول على حقول قلص دون القيام بما يلي:

$("#name").val( jQuery.trim( $("#name") ) );
هل كانت مفيدة؟

المحلول

قد تتمكن من محاولة حلقات من خلال موضوع تريمينج كل شيء.

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

نصائح أخرى

تقليم جميع <input> و <textarea></textarea> عنصر قيم في البيت:

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

هل يمكن أن حلقة على كل من المدخلات وتقليم قبل تقديم.

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

في وقت متأخر قليلا ، ولكن ربما كان هذا ما تريد:

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

أيا من هذه الحلول العمل, لأنها في الواقع تغيير حقول النموذج على الصفحة.أنا فقط أريد أن تعديل قيمة الحقل الذي دون تغيير ما على المستخدم كتبته.

شيء واحد يمكنك فعله هو شكل منفصل مع مخبأة والقيم المتجر الفعلي ، قلص شكل القيم في القيم الخفية عندما يقدم المستخدم ، ثم يمكنك تسلسل "خفية" شكل بعد ذلك.مجرد فكرة.

إذا كنت تستخدم 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;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top