禁用右键单击上下文菜单?

此工具在左键单击强度值时增加强度值,并在左键单击时递减值。

这样可行,但右键单击以减小值时会出现上下文菜单。

我怎么能摆脱它?

代码和演示

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); }