2012-03-16 3 views
1

Используя .serialize(), мне просто нужен массив значений, а не пара значений имени.jQuery сериализовать без имени?

Например, это вернуть:

Single & Multiple & Multiple3 & Check2 & Radio1

Вместо:

сингл = Single & множественным = Multiple & множественным = Multiple3 & проверка = Check2 & радио = Radio1

+1

Мне интересно, почему вы хотите этого? – HerrSerker

+0

Упомянул об этом ниже, но я пытаюсь создать строку из выбранных пользователем элементов в форме, чтобы я мог написать ее по URL-адресу: value1/value2/value3/value4 – gravyfries

+1

Это опасно, потому что вы должны быть уверены в точном порядке. И что между ними не должно быть ни одного значения, которое должно быть там. Вам лучше показать форму и адрес, который вы хотите получить из этого – HerrSerker

ответ

1

Вы можете сделать свой собственный плагин, чтобы сделать это:

jQuery.fn.mySerialize = function() { 

    var returning = ''; 

    $('input, select, textarea', this).each(function() { 
     if (this.value !== "") // check this to avoid && in returning string 
      returning += '&' + this.value; 
    }); 

    return returning.substring(1); 

}; 

И вы можете использовать его так:

var serialize = $("form#fID").mySerialize(); 
alert(serialize); 

Демо: http://jsfiddle.net/maniator/n2tca/

+0

@micha, спасибо за обновление^_^ – Neal

+0

Я пытаюсь сделать это с помощью сериализации, потому что это даст мне только пользовательские значения формы (проверенные радиостанции, выбранные варианты и т. д.). Функция, которую вы написали, включает каждый вход в форму. – gravyfries

+0

@ user618508 вы можете изменить селектор в плагине. – Neal

1

Это своего рода победа в целях сериализации, но вы можете создать свой собственный:

var serializeValues = function(obj) { 
    var result = []; 
    for(x in obj) result.push(obj[x]); 
    return result.join('&'); 
} 
1
var value = $("form").serialize(); 
var newValue = value.replace(/&[^=]+/g, "").replace(/=/g, "/"); 

string.replace: http://www.w3schools.com/jsref/jsref_replace.asp

JS Regex: http://www.w3schools.com/jsref/jsref_obj_regexp.asp

+0

Мое регулярное выражение /.*=/ может быть жадным и занимать много места. Извините, у меня не было возможности проверить это. – Chris

+0

@micha Можете ли вы объяснить регулярное выражение, которое вы добавили? – Chris

+0

Хммм, это дает мне список имен, но не значений. – gravyfries

1

Вы можете использовать .map преобразовать соответствующие input с (в этом примере, все input s, select ы , textarea s, которые не являются кнопками) в массив их значений, затем используйте join:

$("#my_form").submit(function (e) { 
    var serialized = 
     $(":input:not(:button, :submit)", this).map(function(i, el) { 
      return el.value; 
     }).get().join("&"); 

    alert(serialized); 
}); 

Пример:http://jsfiddle.net/andrewwhitaker/zQ4P2/1/

+0

Я пытаюсь сделать это с помощью сериализации, потому что это даст мне только пользовательские значения форм (проверенные радиостанции, выбранные варианты и т. Д.). Функция, которую вы написали, включает каждый вход в форму. – gravyfries

Смежные вопросы