tohokuaikiのチラシの裏

技術的ネタとか。

onEnterでSubmitさせないようにするJavaScript

input type=textでSubmitさせたくない場合ありますよね。
jQuery前提で。

<form id="someForm">
<input type="text" name="hoge">
<input type="submit" id="submitbutton">
</form>

というHTMLフォームの場合、

var post_flag = false;
$(function() {
    $('#submitbutton').bind('mouseup', function(e){
        post_flag = true;
    });
    $('#someForm').bind('submit', function(e){
        setTimeout(function(){
            if (post_flag){
                $(e.target).submit();
                post_flag = false;
            }
        }, 1);
        return post_flag;
    });
});

グローバル変数を使うのが微妙ならClass化させてしまって。あるいはクロージャでもいけるなじゃないかな?

サブミットボタンのonClickをとらないのは、Firefoxで見てたらEnterによるOnsubmit時にサブミットボタンのClickイベントが誘発されてたので。