便便's profile可爱的便便PhotosBlogLists Tools Help

Blog


    2/24/2006

    [原创] 设置Ctrl+Enter提交表单的一劳永逸方法

    转载请注明

    刚刚IE和firefox下测试成功,嘿嘿。

    常规做法是在textarea的标签里写onkeydown事件,如:

    <form name=form2>
    <textarea onkeydown='if(event.keyCode==13 && event.ctrlKey) return document.form2.submit()'>
    </textarea>
    </form>

    或者把函数写到某个方法里,然后调用。

    上面说的常规方法有几个很烦的地方:

    1)必须指定form的name或者id,如果有多个form必须修改代码
    2)代码比较长
    3)每次都要敲那么长的代码(或者复制粘贴?还要打开以前写过的文件,找到,
    选择……敲都敲完了)
    ……

    试了一下,可以用下面的办法,一劳永逸得解决这个问题,只要将脚本
    引用一下,页面不用做任何改动,甚至form的name也不用设
    不管多少form,多少textarea,都能支持快捷键提交

    1)写个脚本,比如common.js
    //自动textarea支持Ctrl+Enter提交, by Net@Lilybbs (yuelinniao@msn)
    window.onload = function()
    {
            for(var i=0; i < document.forms.length; i++)
            {
                    var frm = document.forms[i];
                    for(var j=0; j < frm.length; j++)
                    {
                            var e = frm.elements[j];
                            if(!e.type)
                                    continue;
                            if(e.type=="textarea")
                                    e.onkeydown = function(evt)
                            {
                                    evt=(evt)?evt:((event)?event:null);
                                    if(evt.ctrlKey && evt.keyCode==13)
                                    {
                                            this.form.submit();
                                            return false;
                                    }
                            }
                    }
            }
    }

    2)然后在需要的页面上
    <script src="common.js"></script>

    这个页面的textarea就自动有了Ctrl+Enter提交表单功能