2011-12-13 65 views
0

我几乎已经完成了一个使用jQuery Mobile的ASP.NET webforms网站。我被困在一个特定的用例中。在Android中禁用“前往”按钮表单提交

该网站的作用范围是支持Android,iPhone,黑莓和Windows Mobile,除了一个特定的使用案例外,所有的功能都很好。

这种情况是当用户将一个值输入到其中一个输入框并敲击本机Go/Enter键时。我捕获这个并抛出相应的事件提交按钮点击/点击jQuery。

function BindSubmit(textbox, button) { 
    $(textbox).unbind().keypress(function (event) { 
     var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; 
     if (keyCode == 13) { 
      $(button).trigger('tap'); 
     } 
    }); 
} 

这适用于所有设备,但只有一个,Android。手机最终提交整个表单而不是遵循用例。抓取onsubmit事件并返回false也不起作用。经过一番挖掘,我发现这个Disabling 'go' button form submission in Android when using webview

我希望能为标准网络表单提供解决方案。谢谢。

+0

您是否试过触发`$(button).trigger('click')`而不是'tap'?你有Android设备要测试吗?你的代码是否被执行? – 2011-12-13 18:47:48

回答

1

谢谢你的帮助。我们解决这个问题的方式是绑定到form.submit事件并自己调用mobile.changePage()。然后在changePage()之后我们返回false;这阻止了完整的表单提交,并仍然允许jquery mobile完成其操作。

0

尝试运行$(button).trigger('click')。这可能是更好,更跨平台的发送事件的方式。

你一定要尝试测试它像这样在Android手机上,并找出何时何地执行失败:

function BindSubmit(textbox, button) { 
    console.log("BindSubmit()"); 
    $(textbox).unbind().keypress(function(event) { 
     var keyCode = ...; 
     console.log("Key pressed: " + keyCode + ", isEnter: " + keyCode == 13); 
     if (keyCode == 13) { 
      console.log("Enter key hit, triggering event."); 
      ...; 
     } 
    }); 
} 

如果你有一个链接,我会很乐意为测试我的Nexus One为你:)

+0

捕获事件并不是真正的问题。这是jQuery的移动完成其行动和加载一个href而不提交表单,该表单可以返回到Default.aspx。我会看看我是否可以设置一个jsfiddle来测试 – 2011-12-13 20:18:13

+0

非常好,是的,我很乐意提供帮助。 – 2011-12-13 20:45:13