LoginSignup
1
0

More than 5 years have passed since last update.

HTML FormにGetクエリパラメータを代入するブックマークレット

Last updated at Posted at 2016-08-30

TracでもRedmineでもできるのに、Backlogだと新規課題を作るためのテンプレート機能がなかったので、カッとなって作ってみた。
IE系で使うときは改行文字をとって一行にすれ

query_parameters_to_input_values
javascript:!function(q){
  document.location.search.slice(1).split("&").forEach(function(e){v=e.split("=");q[v[0]]=decodeURI(v[1])});
  [].forEach.call(document.getElementsByTagName("input"), function(e){e.name&&q[e.name]&&(e.value=q[e.name])});
}({});

「ブラウザのアドレスバーの ?から後ろを取り出し、&で分割したそれぞれについて、=の左をキー、右を値としたハッシュテーブルをこしらえておいて、inputタグのうち、nameがハッシュテーブルのキーと一致していたら、その値を設定する。」


使い方:

  1. 上記文字列をブックマークレットとして登録しておく。
  2. リンクするURLにこんなおまけをつけておく: ?key1=value1&key2=value2...
  3. ブックマークレットを実行すると、form の input type=text name=key1 に value1 が、 input type=text name=key2 に value2 がそれぞれ代入される。

TODO:

  • select option を selected にする処理を入れる。 → Backlogのselectが難しすぎた……

Backlogのinputとselectに対応したもの。 ?summary=boo&issueTypeId=C2J&priority=高 みたいに使う。
jquery.chosen ライブラリに合わせた。
アロー演算子を使いたかったんだけど、IE11が対応してなかった……

javascript:!function(q){
  document.location.search.slice(1).split("&").forEach(function(e){v=e.split("=");q['issue.'+v[0]]=decodeURI(v[1])});
  [].forEach.call(document.getElementsByTagName("input"), function(e){q[e.name]&&(e.value=q[e.name])});
  [].forEach.call(document.getElementsByTagName("select"), function(e){
    q[e.name]&&[].slice.call(e.options)
      .filter( function(o){return q[e.name]==o.text})
      .forEach(function(s){jQuery(e).val(s.value).trigger("liszt:updated")})
  });
}({});

注意:

  • 現状有姿無保証での提供です。エラーハンドリングとかちゃんとやってないし。ま、Submitとかしてないから影響ないと思うけど

なんか他の人もつくってそうな予感。
もうちょっとうまいやり方がある予感。
というかサーバサイドでやってくれよと思う。

Any Comments, Suggestions are welcome!

1
0
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
1
0