我有一个表单,我在通过jquery渲染后正在修改 - 只是因为我无法控制创建表单的代码.
无论如何,我在登录按钮旁边添加了一个按钮,它是表单的一部分.为了做到这一点,我使用以下jquery:
$('.mynewbutton').hide();
$(".submit").addClass("buttonalign");
$('<div class="shared">').insertBefore($('.submit'));
$('.submit').after($('<div class="circle circlealign">i</div>'));
Run Code Online (Sandbox Code Playgroud)
我添加的新按钮实际上是一个我用css绘制的圆圈.这很好 - 新按钮与登录对齐.这是css:
.shared {
position: absolute;
width: 200px;
}
.buttonalign {
position: absolute;
top:340px;
}
.circlealign {
position: absolute;
top:340px;
}
Run Code Online (Sandbox Code Playgroud)
我需要解决的问题是当登录表单返回错误消息时,它会在表单顶部显示错误并将所有内容都按下.所以我的登录按钮和新按钮最终覆盖了表单上的其他元素,因为它们的位置是固定的.
我将固定数字更改为百分比,如下所示:
.shared {
position: absolute;
width: 100%;
}
.buttonalign {
position: absolute;
top:40em;
}
.circlealign {
position: absolute;
top:40em;
}
Run Code Online (Sandbox Code Playgroud)
但这改变了新按钮的位置,使其不再与登录按钮对齐.它在页面上较低.
你能为我指出正确的方向吗?
谢谢.
编辑1
这里是渲染的HTML ..而且当然jquery的东西在这里没有出现这很痛苦......但你可以看到初始形式看起来像什么
<H1>Login</H1><DL>
<P class="err">Logon Failed</P>
<form action="/cgi-bin/logon/logon" method="POST">
<DT>User ID</DT>
<DD>
<input class=" text" type="text" name="userid">
</DD>
<DT>Password</DT>
<DD>
<input class=" password" type="password" name="password" >
</DD>
<DT></DT><DD><input class="submit" type="submit" name="submit" value="Logon">
</DD>
</FORM></DL>
Run Code Online (Sandbox Code Playgroud)
我很难理解你为什么要使用绝对定位,所以如果出于某种原因有必要这样做,请原谅我。我的解决方案是将现有按钮包装在 div 中,然后将自定义按钮添加到该容器中。然后,您可以将元素放置在该容器内,当错误消息返回时,它们将与其他所有元素一起被推下。
HTML:
<H1>Login</H1>
<DL>
<P class="err">Logon Failed</P>
<form action="/cgi-bin/logon/logon" method="POST">
<DT>User ID</DT>
<DD>
<input class=" text" type="text" name="userid"/>
</DD>
<DT>Password</DT>
<DD>
<input class=" password" type="password" name="password" />
</DD>
<DT></DT>
<DD><input class="submit" type="submit" name="submit" value="Logon"/>
</DD>
</form></DL>
Run Code Online (Sandbox Code Playgroud)
CSS:
#actionButtons > * {
float: left;
margin-right: 2px;
}
#actionButtons:after {
content: "";
clear: both;
display: block;
}
Run Code Online (Sandbox Code Playgroud)
jQuery(封装在 DOM 就绪函数中):
$(function(){
$('.submit').wrap('<div id="actionButtons"/>');
$('#actionButtons').append($('<div class="circle circlealign">i</div>'));
});
Run Code Online (Sandbox Code Playgroud)
更新- 圆形 CSS:
.circle {
display: block;
width: 30px;
height: 30px;
border-radius: 15px;
background: #d1d1c9;
box-shadow: 1px 1px 2px #000;
opacity: 0.95;
font: italic bold 2em/1em "Times New Roman";
text-align: center;
color: #000;
text-shadow: 0 1px 0 #666;
text-decoration: none;
}
Run Code Online (Sandbox Code Playgroud)
这是一个演示: http: //jsfiddle.net/ebTS2/1/