誰かに役立つかもしれないシンプルな機能。
目的:ページをリロードせずに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の複数の名前が考慮されます。
あなたが何かを見逃した場合、教えてください。
すでに一般的に使用されている既製のソリューションがある場合は、それも教えてください。