【发布时间】:2019-05-02 08:19:32
【问题描述】:
我有一个简单的 HTML 表单:
<form>
<select>
<option value="" selected>Select an option</option>
<option value="Warrior">Warrior</option>
<option value="Paladin">Paladin</option>
<option value="Mage">Mage</option>
<option value="Shaman">Shaman</option>
<option value="Warlock">Warlock</option><option value="Priest">Priest</option><option value="Druid">Druid</option><option value="Hunter">Hunter</option>
<option value="Rogue">Rogue</option>
</select>
<p></p>
<br>
Stamina
<br>
<input type="number" name="stamina" placeholder="0" />
<br>
<span id="staminaresult"></span>
js根据用户在输入框中的输入使用inner.HTML返回结果,但也强制用户从select元素中选择一个选项:
$("form").on('keyup change', function (e){
e.preventDefault();
var selectedValue =
// Stamina
$('select').val();
var stamina = $('input[name=stamina]').val();
// Force class selection
if (!selectedValue) {
return alert('You must choose your class');
}
// Stamina calculation
stamina = stamina * 10;
// Stamina result
document.getElementById('staminaresult').innerHTML = ('+' + stamina + ' Hit Points')
因此,如果他们 .keyup 在其中一个输入框中没有做出选择,他们会收到一个错误对话框。按预期工作。
但是,当用户然后单击选择框以修复此错误时,他们会收到第二个错误对话框,因为我认为 js 将其注册为另一个 .keyup!
如何更改我的代码以禁用选择元素上的 .keyup 功能,以便用户不会收到第二个错误对话框?
完整上下文请参见此处的 jsfiddle:https://jsfiddle.net/ejnLbyug/
谢谢, T
【问题讨论】:
标签: javascript forms select input