2009-08-16 4 views
31

Я знаю, что определенное поведение для веб-форм - это не отправлять отключенные поля ... но это не определение, которое я хочу. Я хочу использовать ajax для отправки формы, и я хочу, чтобы она получала все поля, даже если они отключены. Я не хочу создавать обходной путь, когда я делаю поле «отключенным» ... или должен взломать его, когда я включаю поля -> пост -> отключить.отправить отключенные поля

Можно ли сделать ajaxSubmit() или serialize() захватить отключенные поля, поскольку он перемещается по DOM и захватывает значения? или есть другой плагин для сериализации, который может это сделать? или у кого-то есть мода, которую я могу сделать для одного из этих плагинов, чтобы заставить его работать?

или я обречен его взломать?

+2

Объясните серию событий, которые вы хотите, чтобы пользователь опыт , то мы можем помочь вам придумать решение. Должно быть что-то еще в этой истории, иначе мудрый нет причин использовать поле выбора, если он просто будет отключен. –

+2

Вот одна из причин, почему мы хотели эту функциональность (в другом проекте, не связанном с OP). У нас есть веб-сайт AJAXed, который динамически загружает доступные параметры. В некоторых случаях, когда нельзя выбрать разные параметры, мы выбираем один и отключим элемент управления. Это нужно отправить обратно на сервер, потому что нам нужна настройка. (Да, теоретически, мы могли бы выяснить, какое значение будет на бэкэнде, но поскольку логика уже выполнена, нет необходимости усложнять ситуацию.) –

+0

Ну, я думаю, это мертвый разговор, но кто-то его отложил , поэтому я поддержал его. –

ответ

33

Вы можете сделать свои поля readonly, это будет запрещать внесение изменений в значение ваших элементов управления.

Edit: Вы могли бы легко написать «serializeDisabled» функции, итерация инвалидов образуют элементы, которые имеют атрибут имени и с помощью функции jQuery.param в конце, чтобы сформировать последовательную строку:

(function ($) { 
    $.fn.serializeDisabled = function() { 
    var obj = {}; 

    $(':disabled[name]', this).each(function() { 
     obj[this.name] = $(this).val(); 
    }); 
    return $.param(obj); 
    } 
})(jQuery); 
+8

вы не можете сделать