2013-07-28 30 views
1

我已經寫了一個簡單的HTML表單,其中我有2個按鈕和2個JavaScript代碼。 這裏是我的代碼:javascript:windows.location不工作在第一個按鈕點擊

<!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> 

我要的是,在「更新」按鈕,警報應該顯示的更新按鈕的名稱和值和搜索按鈕搜索按鈕的名稱和值的點擊應該顯示的點擊警報()。 。 但會發生什麼是更新按鈕的第一次按鈕,單擊該警報是空白的,然後在地址欄變爲

http://localhost:8080/button_test/check.html?buttonupdate=update

以後如果我在更新按鈕,單擊它retrives上面的網址和顯示適當的價值。 但是如果我點擊搜索按鈕同樣發生即上述網址的價值retrived和地址欄變爲

http://localhost:8080/button_test/check.html?buttosearch=search 

如何實現期望的結果:( 親切指導:(

+0

什麼你到底想要做? –

+0

我想調用特定按鈕點擊的相應功能,並希望獲取該按鈕的地址,只點擊用戶點擊的地址。 – xyz

+0

因此,根據您的評論,你想獲得當前查詢字符串,但也重定向?沒有意義 ! – adeneo

回答

0

嘗試

<input type="submit" id="input2" name="buttonupdate" value="update" onclick="test(); return false;"/> 
+0

我只想要按鈕..沒有鏈接:( – xyz

0

這是最好的一個事件綁定到它,你可以傳遞事件作爲目標。

在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); 
}); 
0

的問題是可變搜索爲空,在第一和提交(你的函數的調用之後,這意味着)後更新,你應該明白這個
但作爲一個解決方案,試試這個

<!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> 
0

怎麼樣使用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);"/> 
+0

這裏'這'指的是當前按鈕對象嗎? – xyz

+0

這是正確的'this'是對象按鈕,你可以使用爲這個對象定義的所有屬性。 –