LoginSignup
3
3

More than 5 years have passed since last update.

formのパラメータをオブジェクトにする

Last updated at Posted at 2015-01-24

jQuery.jslodash.js または Underscore.js を使用。
CoffeeScript で記述。
ajaxform のパラメータ送るときとかに使う。

  • textarea は使わなかったんで、気が向いたら追加。
  • formgetsubmit したパラメータから取得できたら楽そうだけど、方法が思いつかなかった。
  • lodash.js 使ってるんだから、もっとスマートに書ける気がする。
  • checkbox の箇所はパラメータにすると通常は key[]=1&key[]=0&key[]=1 みたいになると思うけど、オブジェクトにしたかったので key[0]=1&key[1]=0&key[2]=1 みたいになるようした。とりあえず動いたけど、動かないパターンもあるかも。
$form = $ 'form'
$formItem = $form.find 'input, select'

params = {}

elms = _.groupBy $formItem, (el) ->
  $ el
    .attr 'name'

_.each elms, (val, key) ->
  switch val[0].tagName
    when 'SELECT'
      params[key] = $(val).val()
    when 'INPUT'
      switch val[0].type
        when 'radio'
          for _val in val
            if $(_val).is ':checked'
              params[key] = $(_val).val()
              break
        when 'checkbox'
          params[key] = []
          _.each val, (_val) ->
            params["#{key}[#{i}]"] =
              if $(_val).is ':checked' then 1 else 0

console.log params
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3