jQuery('#set-form').serialize() disabled

jQuery('#set-form').serialize()、
form要素の中の値をまとめて取得してくれる。

今日ハマったのが、inputタグ を disabled="disabled"
にしてると値がとれないということ。
なんて親切なんだ。やめろ。

外人もおこの様子
http://stackoverflow.com/questions/15958671/disabled-fields-not-picked-up-by-serializearray
http://stackoverflow.com/questions/4748655/how-to-make-serialize-take-into-account-those-disabled-input-elements

結局 serialize() をする前に
removeAttr('disabled')するしかないね、みたいな結論になってる様子。
釈然としないけど、外人もそれで納得してるみたいですし、そうなんでしょうか。


removeAttrしてaddAttrするんならデコレータにしたいですけどね。

var deco = function(serialize_fn,$input){
    return function(){
        $input.removeAttr('disabled');
        var ret = serialize_fn()
        $input.attr('disabled', 'disabled');
        return ret
    }
}
var $form = $('#set-form');
$form.serialize = deco($form.serialize, $('#include-please'));

// ...

$form.serialize();

js力が圧倒的に足りない