我在Chrome上遇到了一个非常奇怪的行为。当我点击添加按钮时,以下代码会导致在Chrome上刷新页面,这不是我想要它做的:
function addSpamAddr()
{
var email = prompt("Add Spam Address","");
if (email == null || email == "")
return false;
var regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
if (regex.test(email) == false) {
alert("You must enter a valid E-Mail address");
return false;
}
var listBox = document.getElementById('spamList');
for (var x = 0; x < listBox.options.length; x++) {
if (listBox.options[x].value == email || listBox.options[x].text == email) {
alert("Already blocked address");
return false;
}
}
var selectBoxOption = document.createElement("option");
selectBoxOption.value = email;
selectBoxOption.text = email;
listBox.add(selectBoxOption);
return false;
}
...
<button style="margin-right: 20px;width:60px" onclick="addSpamAddr()">Add</button>
代码在Internet Explorer上运行良好。我已经创建了一个最小的例子来进一步研究这个问题:
function addSpamAddr()
{
return false;
}
...
<button style="margin-right: 20px;width:60px" onclick="addSpamAddr()">Add</button>
仍然会在Chrome上刷新。
如何阻止刷新?
编辑:在onclick事件中添加return语句后,页面不再刷新我创建的最小示例。
<button style="margin-right: 20px;width:60px" onclick="return addSpamAddr()">Add</button>
但是,如果我应用原始代码,页面仍会刷新。特别是,这一部分导致了它:
var listBox = document.getElementById('spamList');
var exists = false;
for (var x = 0; x < listBox.options.length; x++) {
if (listBox.options[x].value == email || listBox.options[x].text == email) {
alert("Already blocked address");
return false;
}
}
我该如何解决这个问题?
答案 0 :(得分:5)
像这样写
function addSpamAddr()
{
return false;
}
...
<button style="margin-right: 20px;width:60px" onclick="return addSpamAddr()">Add</button>
你必须在你的html鳕鱼中写"return addSpamAddr()"