我有一个具有jquery可拖式div的应用程序。我在可拖放的div中放置了四个文本字段,以便从用户获得输入。
Aspx:
<div id="divAdd" runat="server">
<input id="txtCode" placeholder="Location Code" maxlength="20"
type="text" runat="server" />
<input id="txtName" placeholder="Location Code" maxlength="20"
type="text" runat="server" />
...
</div>
<div>Javascript:
$("#divAdd").draggable({ cursor: 'move', containment: '#divmap',
drag: function () {
fnHandleMove();
}
});我不能将光标放在IPAD中的文本框中,只需点击它。然而,桌面版本工作良好。
如果我注释掉javascript部分,我就能够放置光标和键盘显示.。
这个带有jquery的bug是可拖动的,还是我做错了什么?
除了JqueryUI.js之外,我在应用程序中使用JqueryTouchPunch.js和JSPlumb.js。
任何帮助都将不胜感激。
发布于 2013-01-14 11:57:35
好的,这里有一个解决方案,如果您的textfield --不管是什么HTML元素,不是聚焦、滚动、选择单词、在文本周围移动文本光标--以及任何可能出现的不同场景,那么您可以重写该textfield脚本。我假设您的元素不是可拖的元素,但可能是它的子元素,就像我的情况一样。
在html元素上放置一个类,例如class="useDefault"。然后转到脚本文件并找到该部分:
...
function simulateMouseEvent (event, simulatedType) {
// Ignore multi-touch events
if (event.originalEvent.touches.length > 1) {
return;
}
event.preventDefault();
var touch = event.originalEvent.changedTouches[0],
simulatedEvent = document.createEvent('MouseEvents');
....正如您可能看到的,jquery.ui.touch.punch.js确保event.preventDefault();覆盖浏览器的默认行为。为了防止我们的特定类节点出现这种情况,请做以下修改:
if (event.originalEvent.touches.length > 1) {
return;
}
var touch = event.originalEvent.changedTouches[0],
simulatedEvent = document.createEvent('MouseEvents');
//As you can see here is your class element check
if (touch.target.className === "useDefault") {
event.stopPropagation();
} else {
event.preventDefault();
}此解决方案仅在webkit浏览器和jQuery UI Touch Pchpn0.2.2版本中进行测试。
希望快速解决办法有帮助,BR
发布于 2013-05-24 19:22:47
儿童思想的一种变异:
同样的方法,同样的部分:
function simulateMouseEvent (event, simulatedType) {
// Ignore multi-touch events
if (event.originalEvent.touches.length > 1) {
return;
}
event.preventDefault();代之以:
function simulateMouseEvent (event, simulatedType) {
// Ignore multi-touch events
if (event.originalEvent.touches.length > 1) return;
if (simulatedType == 'mouseup') {
var elem = $(event.originalEvent.changedTouches[0].target);
if (elem.is("input") || elem.is("textarea")) elem.focus();
else event.preventDefault();
} else event.preventDefault();希望能帮上忙。
https://stackoverflow.com/questions/13929680
复制相似问题