jqueryui按钮单选很难通过长时间的鼠标点击来选择
我们正在使用jQueryUI单选按钮构建一个页面,在进行UI测试时,我们发现了一些奇怪的行为 一些用户在通过单击激活单选按钮时遇到问题。特别是,他们倾向于长时间点击(比如按住鼠标左键+250毫秒),并且无法在这段时间内将鼠标保持在准确的位置。当他们在这段时间内移动光标一个像素时,浏览器似乎会切换到文本选择模式。最后,单击事件不会被触发,按钮也不会被选中。有些人需要5-6次尝试才能将其选中 我很好奇,并与我的父亲(60岁以上)进行了测试,他似乎无法以正常的方式使用任何带有此类按钮的网站(他正在进行非常长的点击-比如按住鼠标按钮整整一秒钟:-)jqueryui按钮单选很难通过长时间的鼠标点击来选择,jquery,jquery-ui,user-interface,user-controls,webusercontrols,Jquery,Jquery Ui,User Interface,User Controls,Webusercontrols,我们正在使用jQueryUI单选按钮构建一个页面,在进行UI测试时,我们发现了一些奇怪的行为 一些用户在通过单击激活单选按钮时遇到问题。特别是,他们倾向于长时间点击(比如按住鼠标左键+250毫秒),并且无法在这段时间内将鼠标保持在准确的位置。当他们在这段时间内移动光标一个像素时,浏览器似乎会切换到文本选择模式。最后,单击事件不会被触发,按钮也不会被选中。有些人需要5-6次尝试才能将其选中 我很好奇,并与我的父亲(60岁以上)进行了测试,他似乎无法以正常的方式使用任何带有此类按钮的网站(他正在进行
我想知道,过去是否有人遇到过这个问题,是否有解决办法?我可以禁用按钮的文本选择吗?也许您可以尝试使用mouseup()jquery事件。它将允许您选择当前单选按钮,无论单击多少次。下面是一个例子():
Edit:由于问题确实与此有关,因此在
mousedown
事件上选择一个按钮可能更容易。这是一种非标准的用户体验行为,但它应该解决按钮上的“长时间点击”问题。因此,添加以下事件处理程序将在检测到鼠标左键“down”操作时选择一个按钮-请参阅
JavaScript
$('label').on('mousedown', function(event) {
switch (event.which) {
case 1:
$(this).click();
}
});
我的原始答案 首先,我要使单选按钮有一个更大的目标区域。您可以将
包装在一个带有填充的
中,该填充首先允许标签文本也选择按钮,但填充提供了更多的空间,可以在其周围单击
第二,从中,您可以禁用文本选择,使移动不会取消单击
HTML
<label>Button 1 <input type="radio" name="btn" /></label>
<label>Button 2 <input type="radio" name="btn" /></label>
或者。这不是一个完美的解决方案,但在我有限的测试中,我发现有更多的点击被注册。使用CSS,我真的无法再选择文本,但当我在你的小提琴上按住鼠标的同时移动光标时,按钮仍然没有被点击-(另外,按钮来自jQuery UI(只能单击label元素),它们已经相当大了。向下单击文本,在按钮文本上移动鼠标,然后向上单击(仍然在文本上)正在Chrome 26中为我选择一个按钮。很抱歉,错过了您正在使用jQueryUI单选按钮的事实。我将尝试用这些按钮给出更相关的答案。@s1lv3r我已经用jQueryUI单选按钮的替代解决方案编辑了我的答案。谢了,这解决了问题。谢谢!顺便说一下,您的JS示例中有一个输入错误:使用
event
而不是e
。实际上,在单击输入元素本身时,似乎根本不会出现此问题,而仅在单击连接的标签元素时才会出现。而且在jQuery UI中,您只能单击标签;很可能是鼠标移动错误,很难将鼠标按住那么长时间而不移动标签单像素。这可能是一个更相关的问题:
<label>Button 1 <input type="radio" name="btn" /></label>
<label>Button 2 <input type="radio" name="btn" /></label>
label {
padding:0 10px;
border:1px dotted lightblue;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}