Tapestry存在多个提交按钮时设定按回车键动作的方法

Tapestry存在多个提交按钮时设定按回车键动作的方法 

浏览器的两个默认处理
1,当表单存在多个提交按钮,用户按下回车键,浏览器默认是提交左上角那个按钮;
2,如果在javascript中document.forms[0].submit()则同样提交表单,但不传递任何提交按钮的信息。

用户可能会要求设置一个默认提交按钮,而不是浏览器默认的动作。如果用户在页面上按回车键,则相当于点击其中一个提交按钮。

本文提供了解决回车键提交问题(兼容Firefox和IE)的办法。

1,首先提供了javascript代码,Script类;
public static String getDefaultSubmitScript(String submitName) {
        StringBuffer buffer = new StringBuffer();

        buffer.append("addEventListener(");
        buffer.append("/"document/",");
        buffer.append("/"keypress/",");
        buffer.append("function fireDefaultSubmit(evt){                       defaultSubmit(evt,'" + submitName + "');}");
        buffer.append(");");
        return buffer.toString();
    }


2,需要修改标准Body组件,将Body.java和Body.jwc拷贝到本地路径中,参考 Tapestry数据校验-修改Body.java和Body.js
3,每个页面类需要覆盖方法,设定默认提交的组件ID:
public String getDefaultSubmit() {       
   return "login";
}
4,修改Body.jwc
修改class为本地的Body类全标识。

5,由于修改了tapestry标准组件,需要修改相应的配置文件;
修改Framework.library中Body的specification-path为本地的包路径;

6,在page中设置相应的Submit/ImageSubmit组件的tag属性。

本文额外提供了替换tapestry标准组件的做法,尽量不要修改tapestry的标准类库,仅供参考。

你可能感兴趣的:(JavaScript,function,String,浏览器,tapestry,firefox)