小编McT*_*fik的帖子

表单onSubmit确定按下了哪个提交按钮

我有一个带有两个提交按钮和一些代码的表单:

HTML:

<input type="submit" name="save" value="Save" />
<input type="submit" name="saveAndAdd" value="Save and add another" />
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

form.onSubmit = function(evnt) {
    // Do some asyncrhnous stuff, that will later on submit the form
    return false;
}
Run Code Online (Sandbox Code Playgroud)

当然,这两个提交按钮可以完成不同的事情.有没有办法找出onSubmit按下哪个按钮,所以稍后我可以提交thatButton.click()

理想情况下,我不想修改按钮的代码,只是有一个具有此行为的纯javascript插件.

我知道FF有,evnt.explicitOriginalTarget但我找不到其他浏览器的东西.

html javascript

93
推荐指数
6
解决办法
13万
查看次数

Safari Mobile Multi-Line <Select> aka GWT Multi-Line ListBox

在这里使用必须在iPad上运行的webapp(因此,Safari Mobile).

我有这个代码,除了iPad之外几乎可以正常工作:

<select class="gwt-ListBox" size="12" multiple="multiple">
    <option value="Bleeding Eyelashes">Bleeding Eyelashes</option>
    <option value="Smelly Pupils">Smelly Pupils</option>
    <option value="Bushy Eyebrows">Bushy Eyebrows</option>
    <option value="Green Vessels">Green Vessels</option>
    <option value="Sucky Noses">Sucky Noses</option>
</select>
Run Code Online (Sandbox Code Playgroud)

它看起来像是一个有12行的盒子,其中5个被填满.它在FF,IE,Chrome,Safari Win中运行良好.但是,当我在iPad上打开它时,它只是一条线!

使用CSS设置样式不起作用.如果设置高度,它只会使单线更大.有没有办法让它的行为与普通浏览器相同,或者我是否需要制作自定义组件?

谢谢.

html css tags safari

12
推荐指数
1
解决办法
1万
查看次数

Java:抽象方法中的多态返回类型?

我在抽象的java类中有以下代码:

protected abstract <E extends HasText & IsWidget> E createNewDisplayWidget();
Run Code Online (Sandbox Code Playgroud)

编译好.但是,如果我在任何地方调用它,编译器会抱怨:

Bound mismatch: The generic method createNewDisplayWidget() of type DemoClass is not applicable for the arguments (). The inferred type HasText is not a valid substitute for the bounded parameter <E extends HasText & IsWidget>
Run Code Online (Sandbox Code Playgroud)

有没有办法要求抽象方法返回应该实现多个接口的东西?

注意:不,我无法创建一个实现我喜欢的两个特殊界面.GWT有像Label这样的小部件已经实现了所谓的接口,我想使用这个小部件.

编辑:我从这里想到了这个想法(第22页):

http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf

java gwt parametric-polymorphism

11
推荐指数
1
解决办法
2150
查看次数

期望具有多重继承的参数的Java方法

我不知道为什么我在网上找不到这个答案.

我有实现多个方法的类,我想编写方法来期望它们.我不知道怎么做,或者甚至可能.

例如:

public void yellAtPet(<? extends Pet implements YellableAt> arg) {
    arg.yellAt("Don't go there!"); 
    arg.pet("Good Boy");
}
Run Code Online (Sandbox Code Playgroud)

java syntax multiple-inheritance

3
推荐指数
2
解决办法
980
查看次数

GWT 2.2.0 PopupPanel自动隐藏TOUCH事件

PopupPanel是GWT写的(akhem)很久以前的一个类(这就是为什么它太糟糕了),允许弹出内容的弹出窗口.其中一个选项是autoHide,如果在弹出窗口之外有某个事件,它会关闭弹出窗口.除了Safari Mobil(SM)之外,它适用于任何事情.原因是SM不触发点击事件.它会触发触摸事件.PopupPanel被硬编码以查找ClickEvents.

具体来说,代码说:

case Event.ONMOUSEDOWN:
   ...
   if (!eventTargetsPopupOrPartner && autoHide) {
      hide(true);
   ...
Run Code Online (Sandbox Code Playgroud)

显然这不完整,它还应该包括Event.ONTOUCHSTART

问题是,所有方法和字段都是私有的,所以我无法添加此功能.这是GWT团队的一个大嘘声,但并不是真正的关注,因为我可以创建自己的类并复制PopupPanel的内容.最大的问题是nativeEventPreview没有捕获Touch事件!

我尝试将以下内容添加到事件预览中:

private static NativePreviewHandler nativePreviewHandler = new NativePreviewHandler() {
    public void onPreviewNativeEvent(NativePreviewEvent event) {
        Event nativeEvent = Event.as(event.getNativeEvent());
        switch (nativeEvent.getTypeInt()) {         
        case Event.ONTOUCHSTART:        
        case Event.ONMOUSEDOWN:
            EventTarget target = nativeEvent.getEventTarget();
            if (!Element.is(target) || !popup.getElement().isOrHasChild(Element.as(target))) {                  
                popup.hide();
            } break;
        }       
            }
};
Run Code Online (Sandbox Code Playgroud)

'弹出窗口'是PopupPanel,我试图关闭外部触摸事件.令人遗憾的是,在地球上的任何其他浏览器中进行测试时,它可以用于鼠标按下,但不适用于iPad.

我尝试的另一件事是在PopupPanel的玻璃上添加一个TouchStartHandler(它背后的灰色外观).我希望我可以通过这种方式捕捉触摸事件,但我无法在玻璃上触发事件,因为它以某种有趣的方式附加到DOM.我的代码:

private static class ProperPopupPanel extends PopupPanel {

    public ProperPopupPanel() {
        super();            
}          

    void setHideOnGlassTouch() {
        setGlassEnabled(true);

        TouchableLabeThatDoesntCrashOnWrap glass = new TouchableLabeThatDoesntCrashOnWrap(getGlassElement());
        glass.addTouchStartHandler(new TouchStartHandler() …
Run Code Online (Sandbox Code Playgroud)

gwt mobile-safari touch

3
推荐指数
1
解决办法
2633
查看次数