フォームの値からURLルーティング用のURLを作成するjQueryプラグイン

元々は、symfonyのキャッシュがGET, POSTリクエストだと作成できないので、フォームの値をURLに埋め込もうとして作りました。

URLルーティングとは

/user?name=TakiTake&age=24

のようなURLを

/user/name/TakiTake/age/24

と表現すること。

使い方

genUrlを呼ぶと、フォーム以下の要素の値をURLにして返します。

/**
 * generate URL for routing from Form
 *
 * <form>
 *   <input type="text" name="user" value="TakiTake">
 *   <select name="like">
 *     <option value="javascript" selected>javascript</option>
 *     <option value="PHP">PHP</option>
 *     <option value="C">C</option>
 *     <option value="JAVA">JAVA</option>
 *   </select>
 *   <textarea name="comment">眠い</textarea>
 * </form>
 *
 * $(form).genUrl() // /user/TakiTake/like/javascript/comment/%E7%9C%A0%E3%81%84
 */
jQuery.fn.genUrl = function() {
  var url = '';

  // collect input, textarea, selectbox, checkbox elements's name and value by serializeArray method
  // join to /name/value
  jQuery.each(this.serializeArray(), function() {
    if (this['value'] == '')
      return;

    url += '/' + encodeURIComponent(this['name']) + '/' + encodeURIComponent(this['value']);
  });

  return url;
};