2013-02-04 84 views
2

任何人都可以請幫我通過這個.... 我有兩個輸入字段在我的形式。其中一個是隱藏的,我想用按鈕顯示它。現在,當我試圖使用的onClick(顯示),其作用沒有響應......使用javascript顯示錶單元素

任何人都可以給我的代碼片段這樣做....

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
<script> 
function show() 
{ 
document.getElementById('passwd').style.display="block" ; 
} 
</script> 
</head> 
<body> 
<form action="demo.html" > 
<input type="text" name="user" /> 
<br /> 
<input type="text" id="passwd" name="password" style="display:none;" /> 
<input type="button" onClick="show()" name="show" value="show" /> 
<br /> 
<input type="submit" value="OK" /> 
</form> 
</body> 
</html> 

plz幫助

回答

5

這就是:

<input type="button" onClick="show()" name="show" value="show" /> 

當你調用show()的JavaScript將嘗試解析符號show第一;由於您從內嵌代碼調用show(),因此分辨率將在document之間發生,這會嘗試根據輸入框的nameid屬性來解析該符號。

解決方案

重命名按鈕:

<input type="button" onClick="show()" name="showbutton" value="show" /> 

重命名功能:

function showPasswordInputBox() 
{ 
    // your code here 
} 

<input type="button" onClick="showPasswordInputBox()" name="show" value="show" /> 

不要使用內嵌代碼:

function show() 
{ 
    // whatever 
} 

var showButton = document.getElementsByName('show')[0]; 

showButton.addEventListener('click', show, false); 

Don't give event handler the same name as a field!

Javascript Function and Form Name conflict

+0

爲什麼這種奇怪的行爲? – Jashwant

+0

謝謝傑克!!!! –

+0

@Jashwant這有一個確切的原因,但實際上它只是瀏覽器quirkiness :) –

-2

您需要使用此:

onClick="javascript:show();" 

或者乾脆

onClick="show();" 

基本上,只需添加因爲你<input>聲明的分號:)

+0

抱歉,但還是它不工作 –

+2

你不需要添加一個分號(儘管這樣做是一種很好的風格),因爲JavaScript具有分號插入功能,將會在那裏處理它。你添加的標籤('javascript:')完全沒用,因爲沒有循環可以打破或繼續。 – Quentin

+0

我的壞... @PradipBorde,請看傑克的上面的答案。感謝Quentin指出它 –

0

看到有與JavaScript的命名顯示()函數的約定問題。因爲只需將名稱更改爲show1()。它會工作

function show1() 
{ 
alert("ok"); 
} 
<input type="button" name="show" value="show" onclick="show1()" /> 
+0

是啊知道了謝謝!!!! –

0

你可以使用jQuery的寫下面的代碼:$("#passwd").show() 或者您可以使用addClass('here_css_class')和CSS代碼.here_css_class{ display: block }

0
try this 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
<script> 
function show() 
{ 
document.getElementById('passwd').style.display="block" ; 
} 
</script> 
</head> 
<body> 
<form action="demo.html" > 
<input type="text" name="user" /> 
<br /> 
<input type="text" id="passwd" name="password" style="display:none;" /> 
**<button onClick="show()" >Show</button>** 
<br /> 
<input type="submit" value="OK" /> 
</form> 
</body> 
</html>