Javascript-フォームからハッシュ配列にデータを取得する

誰かに役立つかもしれないシンプルな機能。



目的:ページをリロードせずに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の複数の名前が考慮されます。

あなたが何かを見逃した場合、教えてください。

すでに一般的に使用されている既製のソリューションがある場合は、それも教えてください。



All Articles