JS Onchange 处理前的显示值

JS Onchange display value before processing

提问人:sushi 提问时间:8/17/2022 最后编辑:Barmarsushi 更新时间:8/17/2022 访问量:36

问:

我有一个输入元素。用户选择一个选项后,我检查所选的选项。如果它比我预期的要大,我会打开一个框,询问用户是否确定他们选择了正确的选项。这只是一个警告,因此我不会重置该值或阻止用户选择这些选项。formselectalert

目前,这会导致 首先显示,然后在他们点击后更改网页上的选项。alertOK

在事件期间处理选择之前,如何获取元素中的值以显示选择?selectonchange

mySelectElement.onchange = function() {
    if(mySelectElement.value >= 1000) {
        alert("Are you sure you can eat that many apples?");
    }
    // else nothing, less than 1000
};
JavaScript HTML 表单

评论


答:

0赞 imvain2 8/17/2022 #1

有几个解决方案,一个不使用警报。您可以使用模态库,或者直接输出到 dom。

如果必须使用警报,请将其包装在 setTimeout 中,以便延迟。

let select = document.querySelector("select");

select.addEventListener("change",function(){
  if(select.value > 1){
    setTimeout(function(){alert("Alert");},100);
  } 
});
<select ><option value="0">A</option><option value="3">3</option></select>

评论

0赞 imvain2 8/17/2022
@Barmar,我理解这个问题,因为当用户在选择中进行选择时,他们看不到所选选项,直到他们单击警报上的“确定”按钮之后。因此,这将向用户显示所选选项,然后等待一小段时间,然后弹出警报。