inputmask与gwt结合使用方式如下:
public class JQueryMask {
public native static void setMask(Element elem,String mask) /*-{
$wnd.jQuery(elem).find("input").inputmask(mask);
$wnd.jQuery(elem).find("input").change(function(e) {
});
}-*/;
public native static void removeMask(Element elem) /*-{
$wnd.jQuery(elem).find("input").inputmask("remove");
}-*/;
public native static void setMaskWithGreadyFalse(Element elem,String mask) /*-{
$wnd.jQuery(elem).find("input").inputmask({mask:mask,greedy:false});
$wnd.jQuery(elem).find("input").change(function(e) {
});
}-*/;
}
当窗口小部件初始化并且一切都在浏览器中工作时,将调用此方法 . jQuery变量未初始化,这会产生相同的异常:
console.log($wnd.jQuery());
也:
console.log($wnd.$());
这是:
com.google.gwt.core.client.JavaScriptException: (null) @assembly.gwtlib.gui.plugins.JQueryMask::removeMask(Lcom/google/gwt/dom/client/Element;)([JavaScript object(77)]): null
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:249)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:576)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeVoid(ModuleSpace.java:304)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeVoid(JavaScriptHost.java:107)
at assembly.gwtlib.gui.plugins.JQueryMask.removeMask(JQueryMask.java)
at assembly.gwtlib.gui.widget.input.Input.setMask(Input.java:54)
at assembly.gwtlib.gui.widget.input.DateInput.(DateInput.java:76)
...
2 回答
GWTTestCases使用他们自己的HTML主机页面(因为,从技术上讲,你甚至可能没有,或者不是静态的),所以如果你需要jQuery用于测试,你必须从测试本身加载它(例如使用
ScriptInjector
,来自您的测试方法或来自gwtSetUp()
)感谢Thomas Broyer,我实现了以下代码: