2012-02-09 196 views
5

我使用iScroll4插件(http://cubiq.org/iscroll-4/)将滚动条添加到长度超过浏览器视口高度80%的页面。出于某种原因,当(并且仅在这种情况下)我添加它并尝试点击输入时,它将不会选择。只需点击其标签即可选择输入。为什么我不能点击输入?

我能做些什么来使iScroll4和可选择的输入?

+1

奇怪的是,右键单击'input'元素会将焦点移动到该元素(即使您关闭上下文菜单),但不能单击。 – 2012-02-09 11:41:22

+0

是的,它适用于右键单击和标签单击,但不是左键单击也适用于我:) – Atadj 2012-02-09 11:44:29

+0

它可能与您的标记有关。您不应该在标签标签中嵌套输入。标记是否动态?也许你应该考虑削减嵌套标签的数量。 – 2012-02-09 13:46:09

回答

12

尝试这种解决方案

myScroll = new iScroll('wrapper', {}); 

    myScroll.options.onBeforeScrollStart = function(e) {     
     var target = e.target; 

     while (target.nodeType != 1) target = target.parentNode; 
     if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA'){ 
      e.preventDefault(); 
     } 
    } 
+1

谢谢!像魅力一样工作! – Atadj 2012-02-28 20:20:00

+1

是的!这个为我工作。 – kaleazy 2012-09-13 04:52:19

+0

WOOOOOOOOOO! +1谢谢@ darryn.ten我不想问你这个问题,你能否简单解释一下为什么这会起作用: - /如果你有时间。再次感谢! – Red2678 2013-10-08 16:22:49

4
$('input[type=text]').bind('touchstart click', function(){ 
    $(this).focus(); 
}); 
0
var myScroll; 
function loaded() { 
    myScroll = new iScroll('wrapper', { scrollbarClass: 'myScrollbar' }); 

    myScroll.options.onBeforeScrollStart = function(e) {     
     var target = e.target; 

     while (target.nodeType != 1) target = target.parentNode; 
     if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA'){ 
      e.preventDefault(); 
     } 
    } 
} 
document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false); 

document.addEventListener('DOMContentLoaded', loaded, false); 
0

我使用5.1.2版和它的工作。

window.myScroll = new IScroll ('#iscroll-wrapper', 
    probeType: 3, 
    mouseWheel: true, 
    scrollbars: true, 
    bounce: true, 
    keyBindings: true, 
    invertWheelDirection: false, 
    momentum: true, 
    fadeScrollbars: false, 
    interactiveScrollbars: true, 
    resizeScrollbars: true, 
    shrinkScrollbars: false, 
    click: false, 
    preventDefaultException: { tagName:/.*/ } 
}