表单中的提交按钮不适用于Iscroll

时间:2014-03-11 16:12:11

标签: javascript iscroll

我使用Iscroll 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>

4 个答案:

答案 0 :(得分:1)

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

所以我替换了iscroll line 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浏览器没有在IE上测试,但检查员告诉我一个错误,他说目标没有定义?

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

ps作者:你必须在你的iscrolldéclaration中点击为false,否则你将有一个错误,人们不能在输入类型文本中写出正确的文本!

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

iscroll5 js file

替换下面的代码行
if ( !e._constructed ) {
                    e.preventDefault();
                    e.stopPropagation();
}

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

答案 3 :(得分:0)

我遇到了同样的问题。其他答案没有解决我的问题。

通过完全删除点击选项click: true来解决此问题。

来自the documentation

  

options.click

     

要覆盖原生滚动,iScroll必须禁止某些默认设置   浏览器行为,例如鼠标点击。如果你想要你的申请   要响应click事件,您必须明确设置此选项   为真。 请注意,建议您使用自定义点击事件   相反(见下文)。

     

默认值:false