我有一个输入文本和一个用于检查输入文本值的按钮。
当网页加载时,输入的文本有焦点,这个值默认为空。
因此,当您将焦点放在输入文本 (onblur
) 之外时,check_input_value(event)
函数会执行 alert("Your input value must not empty")
一次,当输入文本值为空时。
这在 Firefox 中完美运行。但在 Chrome 中,此警报会无限期执行,而不是一次。
这里是代码(你可以在 https://jsfiddle.net/fcg86gyb/ 试试(用 Chrome 试试)):
<input type="text" id="input_text"> <input type="button" value="Check input value" onclick="check_input_value(event);">
<script type="text/javascript">
//Get the input text element :
input_text = document.getElementById("input_text");
//Put focus in input text :
input_text.focus();
/*Add event listener in the input text element.
On blur, if your input value is empty, then execute check_input_value(event) function
to check input text value :
*/
input_text.addEventListener('blur',
function(event)
{
var event = window.event || event;
check_input_value(event);
}
, false
);
//Function for checking input text value :
//if the input value is empty, display alert "Your input value must not empty", and put focus in input text.
function check_input_value(event)
{
var event = window.event || event;
if(input_text.value == "")
{
alert("Your input value must not empty");
input_text.focus();
return false;
}
}
</script>
那么如何在 Chrome 中执行一次警报而不是无限期地执行?
最佳答案
chrome 会无限期地执行而不是执行一次,因为您的函数总是将焦点返回到输入文本,并且您总是会更改焦点,您的函数将被调用。在 Firefox 中运行良好,因为输入文本在 javascript 函数的末尾没有获得焦点。
如果您删除 input_text.focus();
它将起作用。
关于javascript - 我无法停止 Chrome 中的警报方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39789997/