コンテナを作成し、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
本質的には、 '$( '。toggle-pass')を実行できるようにしたい。頭にhead(function(){togglePass();});を押して、前の入力のタイプを変更する。 – Ben
答えが更新されました。 –