目的:ページをリロードせずにjQuery.post()を使用してフォームからデータを送信します。
タスク:フォームからデータをハッシュ配列として取得します。
関数getFormHash(formSelector) { ハッシュ= {}; 入力= {}; jQuery(formSelector + 'input')。each(関数(){ name = jQuery(this).attr( 'name'); 値= jQuery(this).attr( 'value'); type = jQuery(this).attr( 'type'); if(name.substr(name.length-2、2)== '[]'){ name = name.substr(0、name.length-2) if(typeof(inputs [name])== 'undefined'){ 入力[名前] = 0; } その他{ 入力[名前] ++; } if(type.toUpperCase()!= 'CHECKBOX' || jQuery(this).attr( 'checked')== true){ ハッシュ[名前+ '[' +入力[名前] + ']'] =値; } } その他{ ハッシュ[名前] =値; } }); jQuery(formSelector + 'select')。each(関数(){n name = jQuery(this).attr( 'name'); multiple = jQuery(this).attr( 'multiple'); if(typeof(name)!== 'undefined'){ i = 0; jQuery(this).children( 'option')。each(関数(){ if(jQuery(this).attr( 'selected')){ 値= jQuery(this).attr( 'value'); if(multiple == true) ハッシュ[名前+ '[' + i + ']'] =値; 他に ハッシュ[名前] =値; i ++; } }); } }); jQuery(formSelector + 'textarea')。each(関数(){ name = jQuery(this).attr( 'name'); 値= jQuery(this).html(); ハッシュ[名前] =値; }); ハッシュを返します。 }
この関数は、フォーム内のすべての入力、選択、およびテキストエリアを単純に通過し、ハッシュ配列を形成します。 フォーム名[]およびselectの複数の名前が考慮されます。
あなたが何かを見逃した場合、教えてください。
すでに一般的に使用されている既製のソリューションがある場合は、それも教えてください。