禁用“go”; Android 中的按钮表单提交

发布于 2024-12-20 22:58:02 字数 827 浏览 0 评论 0原文

我几乎已经使用 jQuery Mobile 完成了一个 ASP.NET Webforms 网站。我陷入了一个特定的用例。

该网站的范围是支持 Android、iPhone、BlackBerry 和 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 也不起作用。经过一番挖掘后,我发现了这个 禁用“go”按钮表单Android 中使用 webview 时提交

我希望为标准网络表单找到一个解决方案。谢谢。

I have almost completed an ASP.NET webforms website using jQuery Mobile. I am stuck on one specific use case.

The site is scoped to support Android, iPhone, BlackBerry and Windows Mobile all of the functionality works great except for one specific use case.

The case is when a user is entering a value into one of the input boxes and then hits the native Go/Enter key. I am capturing this and throwing the appropriate event submit button click/tap with 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');
        }
    });
}

This works great on all devices but one, Android. The phone ends up submitting the entire form instead of following the use case. Grabbing the onsubmit event and returning false doesn't work either. After some digging I found this Disabling 'go' button form submission in Android when using webview .

I am hoping for a solution to this for a standard webform. Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

你げ笑在眉眼 2024-12-27 22:58:02

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

Thank you for the help. The way we solved this is binding to the form.submit event and calling the mobile.changePage() ourselves. Then after the changePage() we return false; This prevented the full form submit and still allowed jquery mobile to complete its actions.

梦幻的味道 2024-12-27 22:58:02

尝试运行 $(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 上为您测试它:)

Try running $(button).trigger('click'). This might be a better, more cross-platform way of sending the event.

You should definitely try to test it like this on an Android phone and find out when and where execution fails:

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.");
            ...;
        }
    });
}

If you have a link to it, I'd be happy to test it on my Nexus One for you :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文