禁用右键单击上下文菜单?
此工具在左键单击强度值时增加强度值,并在左键单击时递减值。
这样可行,但右键单击以减小值时会出现上下文菜单。
我怎么能摆脱它?
代码和演示
var Alexander = { Strength: "AlexanderStrengthVal", Bonus: "AlexanderRemainingBonusVal", Limits: { Strength: 60, } }; function add(character, stat) { var txtNumber = document.getElementById(character[stat]); var newNumber = parseInt(txtNumber.value) + 1; var BonusVal = document.getElementById(character["Bonus"]); if(BonusVal.value == 0) return; var newBonus = parseInt(BonusVal.value) - 1; BonusVal.value = newBonus; txtNumber.value = newNumber; } function subtract(character, stat) { var txtNumber = document.getElementById(character[stat]); var newNumber = parseInt(txtNumber.value) - 1; if(newNumber < character.Limits[stat]) return; var BonusVal = document.getElementById(character["Bonus"]); var newBonus = parseInt(BonusVal.value) + 1; BonusVal.value = newBonus; txtNumber.value = newNumber; }
Character Strength Spending Bonus Alexander
您必须使用event.preventDefault()
来防止这种情况发生。
对于代码,您必须将触发事件对象作为函数subtract
的引用传递。 像这样:
onContextMenu="subtract(event, Alexander, 'Strength');" // This is in the HTML function subtract(e, character, stat) { e.preventDefault(); // The rest of your code… }
工作实例
但请注意,你的代码很乱。 首先,在JSBin本身中,它会输出一系列您应该查看的警告。 另外, 您不应该内联绑定事件处理程序 。 请分开您的疑虑 。
从之前的答案中偷走了这个,但改变了一点。 给
一个像…“强度”或其他的id,然后试试这个:
$(document).ready(function() { $('#strength').bind('contextmenu', function(e) { return false; }); });
把它放在开头,并在代码中包含jQuery。
你的JSbin
可以试试这个
http://jsbin.com/OGoLuHa/1/edit
代码 * 更新 *而不是全身:
http://jsbin.com/ujaSiTu/1/edit
然后只执行此代码。
function subtract(character, stat) { alert('Substract context Menu'); var txtNumber = document.getElementById(character[stat]); alert(txtNumber); var newNumber = parseInt(txtNumber.value) - 1; alert(newNumber); if(newNumber < character.Limits[stat]) return; var BonusVal = document.getElementById(character["Bonus"]); var newBonus = parseInt(BonusVal.value) + 1; BonusVal.value = newBonus; txtNumber.value = newNumber; alert(newNumber); }