2015-04-24 46 views
2

我有一个表,看起来像这样的箭头:禁用窗口滚动使用时,输入具有焦点

Example

这让我疯狂的行为是当你有一个焦点输入元素上并按住右箭头在键盘上,当插入符号触摸行结束时,整个窗口自动开始滚动。我与preventDefaultstopPropagation疯了,但没有成功。

有什么办法让用户在输入元素中自由移动插入符号,但是当他碰到边框时,主窗口不会滚动?

+0

尝试像解除绑定滚动事件$(窗口).unbind( '滚动'); – Shelim

+0

感谢Shelim的建议,但似乎它不工作 –

+0

很晚,但实际上我想使用input.selectionStart与preventDefault()当插入键等于文本输入的开始或结束在箭头键的keydown事件内输入,值得尝试 –

回答

1

您可以防止水平滚动设置:

body { 
    width: 100%; 
} 

body.prevent-scroll { 
    overflow: hidden; 
} 

然后我们听focusblur事件添加或删除类:

$("input") 
    .on("focus", function() { 
     $("body").addClass("prevent-scroll") 
    }) 
    .on("blur", function() { 
     $("body").removeClass("prevent-scroll") 
    }) 

http://jsfiddle.net/9zgspozq/2/

+0

由于这不能完全满足我(我宁愿保持滚动条)现在似乎是最好的解决方案出现在这里。 –