我希望能够禁用单选按钮的点击功能,以便我可以取消选中它。
但是,当我取消选中它时,点击仍然会触发,最终结果是取消选择的广播(并相应地修改其他页面元素),然后由于onclick事件重新检查。
var clickFunction = function(e, radio, p){
var checked = radio.get("checked");
radio.set("checked", !checked);
};
this.controlNode = Y.Node.create("<input id='" + id + "' onclick='function(e){return false;}' type='radio' name='" + parent.id + "'>");
this.label = Y.Node.create("<label for='" + id + "'>" + display + "</label>");
Y.on("mousedown", clickFunction, this.label, this.controlNode, parent.controlNode);
parent.controlNode.appendChild(this.controlNode);
parent.controlNode.appendChild(this.label);
使用mousedown事件处理程序,因为它适用于(窗口)触摸屏上的胖手指,并且mousedown和mouseup之间的移动不构成点击。 (用手指轻敲一下,手指会增加和减少屏幕上的表面积,非多点触控屏幕将光标放在接触点的平均值上。轻微的滚动会移动光标)。
鼠标按下气泡,导致依赖性评估并显示/隐藏页面上的其他控件。
我只想要撤消;我认为有另一个重置选项对我的特定用途来说不太令人满意。如果没有其他事情发生在这里,我将不得不使用它。
答案 0 :(得分:2)
尝试传递给事件处理程序的事件外观上的halt
method:
this.controlNode = Y.Node.create("<input id='" + id + "' type='radio' name='" + parent.id + "'>");
this.controlNode.on("click", function(e) { e.halt(); });
这将停止事件传播和默认事件行为(单击)。