javascript:windows.location在单击第一个按钮时不起作用
javascript: windows.location not working at the first button click
我写了一个简单的HTML表单,其中有2个按钮和2个javascript代码。这是我的代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script>
function test(){
var addr=window.location.search;
alert(addr);
}
function validate(){
var newaddr=window.location.search;
alert(newaddr);
}
</script>
</head>
<body>
<form action="">
<input type="submit" id="input2" name="buttonupdate" value="update" onclick="test();"/>
<input type="submit" id="input1" name="buttosearch" value="search" onclick="validate();"/>
</form>
</body>
</html>
我想要的是,点击"更新"按钮时,警报应该显示更新按钮的名称和值,点击搜索按钮时,搜索按钮的名称或值应该由alert()显示。但发生的情况是,第一次点击更新按钮时,警报为空,然后地址栏变为
http://localhost:8080/button_test/check.html?buttonupdate=update
稍后,如果我点击更新按钮,它会检索上面的url并显示正确的值。但如果我点击搜索按钮,同样的情况也会发生,即上面的url值会被检索,地址栏会更改为
http://localhost:8080/button_test/check.html?buttosearch=search
如何达到预期的结果:温馨提示:(
尝试
<input type="submit" id="input2" name="buttonupdate" value="update" onclick="test(); return false;"/>
最好将事件绑定到它,这样您就可以将事件作为目标传递。
在HTML、中
<input type="submit" id="input2" name="buttonupdate" value="update" />
<input type="submit" id="input1" name="buttosearch" value="search" />
js中,
function test(e){
// obtain address ?
var addr=window.location.search;
// obtain value
var value = e.target.getAttribute("value");
// obtain name
var name = e.target.getAttribute("name");
// alert
alert(name + " - " + value);
// stop page load
e.preventDefault();
}
function validate(e){
var addr=window.location.search;
var value = e.target.getAttribute("value");
var name = e.target.getAttribute("name");
alert(name + " - " + value);
e.preventDefault();
}
// start
window.addEventListener('load', function() {
//bind event to search
var element = document.getElementById("input1");
element.addEventListener('click', validate);
// bind event to update
var element = document.getElementById("input2");
element.addEventListener('click', test);
});
问题是变量搜索一开始为空,并且在提交后更新(这意味着在调用函数后),您应该理解这一点
但作为一个解决方案,试试这个
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script>
function test(){
var addr=document.getElementById("input2").value;
addr+=" "+document.getElementById("input2").name;
alert(addr);
}
function validate(){
var addr=document.getElementById("input1").value;
addr+=" "+document.getElementById("input1").name;
alert(addr);
}
</script>
</head>
<body>
<form action="">
<input type="submit" id="input2" name="buttonupdate" value="update" onclick="test();"/>
<input type="submit" id="input1" name="buttosearch" value="search" onclick="validate();"/>
</form>
</body>
</html>
使用this
作为函数的参数怎么样:
<script>
function test(button){
alert(button.name + " and " + button.value);
}
function validate(button){
alert(button.name + " and " + button.value);
}
</script>
<input type="submit" id="input2" name="buttonupdate" value="update" onClick="test(this);"/>
<input type="submit" id="input1" name="buttosearch" value="search" onClick="validate(this);"/>
相关文章:
- Spring WebFlow2 Javascript只在第一个单选按钮上工作
- 两个提交按钮,但第一个返回空
- 单击按钮显示不同的文本,重复第一个文本
- Javascript尽管ID不同,但只有第一个按钮提交给Ajax表单
- 为什么在文本框内按回车键,单击第一个按钮并提交表单
- 只有第一个按钮在带有 Jquery 的 forEach 标签中有效
- jQuery当前选中的单选按钮值始终显示第一个按钮值
- 当有多个按钮的值相同时,如何点击第一个按钮
- 只有ID为的第一个按钮响应
- jquery只打开第一个按钮
- Javascript在第二个按钮单击而不是第一个按钮上工作
- 如何在单击第一个按钮时将第二个按钮传递给javascript函数
- javascript:windows.location在单击第一个按钮时不起作用
- 仅为第一个按钮添加处理程序
- 如何在点击第一个按钮后显示第二个按钮
- 对话框'动态内容只显示一次后,第一个按钮点击
- 第一个按钮可以工作,第二个不行
- 只选择第一个按钮
- 仅向列表中的第一个按钮添加功能
- 按钮在循环中,单击仅触发第一个按钮