0

ajaxForm()を使用してフォームをアップロードする必要があります(または、fieldSerialize()がファイルフィールドを適切にシリアル化していないように見えるため)。

ajaxForm()を使用して、フォーム内のフィールドのサブセットのみをシリアル化するにはどうすればよいですか?beforeSerialize()またはbeforeSubmit()でarrまたは$ formパラメーターを操作しようとしましたが、実行されません。

または、ajaxSubmit()またはfieldSerialize()を使用して、ファイルのアップロードファイルもサポートするにはどうすればよいですか。EGの場合、クラスhiddenFieldを持つフィールドを除外したいとします。

ありがとう!

4

2 に答える 2

4

不要なフィールドを無効に設定するだけでこれを解決できませんか?

無効なフィールドは提出されていないと思います。jqueryのソースコードでこれを参照してください>

serializeArray: function() {
    return this.map(function(){
        return this.elements ? jQuery.makeArray( this.elements ) : this;
    })
    .filter(function(){
        return this.name && !this.disabled &&
            ( this.checked || rselectTextarea.test( this.nodeName ) ||
                rinput.test( this.type ) );
    })
于 2012-07-30T00:02:52.530 に答える
0

次のようなカスタムシリアル化関数を記述します。jQueryは、「hiddenField」クラス属性値を持つすべての入力を除外することに注意してください。

  function scrapeFormData(formName){
var frm_data = "";
$('#'+formName+' :input').not('.hiddenField').each(function(){
    switch(this.type){
        // handle checkbox specially 
        // I persisted my checkbox field this way. You can do this in a better way
        case 'checkbox': {
                if ($(this).attr('checked') == 'checked'){
                    frm_data += $(this).attr('id') + "=1&";// checked value 1
                }else{
                    frm_data += $(this).attr('id') + "=0&";// unchecked value 0
                }
                break;
        }
        // handle radio button specially
        // I persisted my radio button field this way. You can do this in a better way
        case 'radio': {
                if ($(this).attr('checked') == 'checked'){
                    //alert('checked');
                    frm_data += $(this).attr('id') + "=" + $(this).attr('value')+"&";
                }                   
                break;
        }
       default:{
                frm_data += $(this).attr('id') + "=" + $(this).attr('value')+"&";
                break;
        }
    }
});   
frm_data = frm_data.substring(0,(frm_data.length - 1));
return frm_data;

}

于 2012-08-03T21:13:04.840 に答える