表单中的提交按钮与滚动不起作用

Submit button in form doesn't work with Iscroll

本文关键字:滚动 不起作用 按钮 提交 表单      更新时间:2023-09-26

我使用isscroll 5,一切都是我想要的工作,除了一件事。我不能点击表单中的提交按钮,什么也没发生。

这是我的代码,我尝试了很多东西,但我不知道如何修复它。

<script type="text/javascript">
var scroll;
function loaded() {
        scroll = new IScroll('#contenu', {
        tap:true,
        desktopCompatibility: true,
        scrollbars: false,
        interactiveScrollbars: true,
        freeScroll: true,
        scrollX: true,
        scrollY: true,
        momentum: false,
        mouseWheel: true,
        click: true,
        useTransform: false,
            onBeforeScrollStart: function (e) {
                var target = e.target;
                while (target.nodeType != 1) target = target.parentNode;    
                if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA'  && target.tagName != 'BUTTON') {
                    e.preventDefault();
                }   
            }
    });
}
//disables browser mouse scrolling
if (window.addEventListener) {
    window.addEventListener('DOMMouseScroll', wheel, false);
}
function wheel(event) {
    event.preventDefault();
    event.returnValue = false;
}
window.onmousewheel = document.onmousewheel = wheel;
</script>

老兄,你是我的英雄,你的修复工作很好,但我已经做了一些改进,因为默认处理程序是不同的:)

所以我把正常的点击事件替换成isrollline 1565

case 'click':
            if ( !e._constructed ) {
                e.preventDefault();
                e.stopPropagation();
            }
            break;
现在我没有问题了,我的发送和重置输入工作得很好,伙计!

case 'click':
        if ( !e._constructed ) {
        if ( !e._constructed && target.type != "submit") {
            e.preventDefault();
            e.stopPropagation();
        }
         e.preventDefault();
         e.stopPropagation();
        }
        break;

这在我的ipad, Android手机和chrome浏览器上工作得很好,Firefox没有在IE上测试,但检查员告诉我一个错误,他说目标没有定义?

有人有办法解决这个问题吗:p?

给作者的提示:你必须在你的isrolld声明中设置click为false,否则你就会有一个错误,人们无法在输入类型文本中写出正确的文本!

我修好了,我可以帮助别人,

case 'click':
            if ( !e._constructed ) {
            if ( !e._constructed && target.type != "submit") {
                e.preventDefault();
                e.stopPropagation();
            }
            }
在iscroll.js

替换iscroll5 js文件中的下面一行代码

if ( !e._constructed ) {
                    e.preventDefault();
                    e.stopPropagation();
}

if ( !e._constructed && e.target.type != 'submit' ) {
                    e.preventDefault();
                    e.stopPropagation();
}

我也有同样的问题。其他答案并没有解决我的问题。

修复了移除点击选项click: true的问题。

来自文档:

options.click

要覆盖本地滚动,isroll必须抑制一些默认值浏览器行为,如鼠标点击。如果你想申请要响应单击事件,必须显式设置此选项为true。请注意,建议使用自定义点击事件

默认值:假