創建一個容器,並且position
CSS屬性設置爲relative
,使任何內絕對定位元件相對於該容器。還要添加display:inline-block
,以便容器縮小到所需的最小大小(=輸入字段的大小)。
然後,添加一個padding-right:42px
到密碼字段,使得按鈕不重疊字段的內容。最後,將position:absolute; right:0;
添加到錨點,以便它位於輸入字段的右側。
小提琴:http://jsfiddle.net/LyfTJ/1/
HTML:
<div class="zpass">
<input type="password" name="zpass" />
</div>
JS:
$(document).ready(function(){
$(".zpass").each(function(){
$(this).append("<a>Show</a>");
var zpass = $("input", this)[0];
$("a", this)[0].href = "javascript:;";
$("a", this).click(function(){
if(zpass.type == "password"){
zpass.type = "text";
this.innerHTML = "Hide";
} else {
zpass.type = "password";
this.innerHTML = "Show";
}
});
});
});
CSS:
.zpass {
position: relative;
display: inline-block;
}
.zpass > input {
padding: 8px 42px 8px 8px;
width: 250px;
border: 1px solid #ccc;
}
.zpass > a {
position: absolute;
right: 0px;
padding: 9px 4px 8px;
font-size: .85em;
color: #a5a5a5;
background: #eee;
border: 1px solid #ccc;
border-left: 0;
text-decoration: none;
cursor: pointer;
text-align: center;
width: 33px;
}
.zpass > a:hover {
background-color: #ccc;
}
雖然這工作,它並不完全符合我要找的就Javascript而言。這隻能通過ID在預定義的元素上工作;我的理想腳本會查看所有''並點擊,更改上一個輸入的類型。這可能嗎?用腳本修剪一下,但無法成功修改它。 – Ben
從本質上講,我希望能夠運行'$點擊(函數(){togglePass();});(」切換通。)。'在頭部,並將它改變了以前輸入的類型。 – Ben
已更新的答案。 –