我正在使用 jQuery Tools 表单对话框获得一些变体行为 - 即在覆盖中包含的表单上使用验证器。这是我的代码(应该直接加载)
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Simple</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script src="http://cdn.jquerytools.org/1.2.5/all/jquery.tools.min.js"></script>
<style type="text/css">
.dialog {
display: none;
width: 400px;
padding:5px;
background-color:rgba(178, 168, 79, 0.7);
border:2px solid #666;
border:2px solid rgba(82, 82, 82, 0.7);
-moz-border-radius:6px;
-webkit-border-radius:6px;
}
form {
background:#333;
padding:15px 20px;
color:#eee;
width:360px;
margin:0 auto;
position:relative;
-moz-border-radius:5px;
-webkit-border-radius:5px;
}
form input {
border:1px solid #444;
background-color:#666;
padding:5px;
color:#ddd;
font-size:12px;
/* CSS3 spicing */
text-shadow:1px 1px 1px #000;
-moz-border-radius:4px;
-webkit-border-radius:4px;
}
form input:focus { color:#fff; background-color:#777; }
form input:active { background-color:#888; }
fieldset {
border: 0;
}
.error {
height:15px;
background-color:#FFFE36;
font-size:12px;
border:1px solid #E1E16D;
padding:4px 10px;
color:#000;
display:none;
-moz-border-radius:4px;
-webkit-border-radius:4px;
-moz-border-radius-bottomleft:0;
-moz-border-radius-topleft:0;
-webkit-border-bottom-left-radius:0;
-webkit-border-top-left-radius:0;
-moz-box-shadow:0 0 6px #ddd;
-webkit-box-shadow:0 0 6px #ddd;
}
form label {
display:block;
font-size:13px;
color:#ccc;
padding-bottom: 2px;
}
</style>
</head>
<body>
<button type="button" name="dlgBtn">Show Dialog</button>
<div class='dialog'>
<form class='form'>
<fieldset>
<label>Name</label>
<input name="name" type="text" required="required" />
</fieldset>
<button type="submit">Submit</button>
</form>
</div>
</body>
<script>
$("button[name='dlgBtn']").click(function() {
$("form")[0].reset();
$("div").data("overlay").load();
});
$("form").validator().submit(function() {
$("div").data("overlay").close();
alert("Submitted OK!");
return false;
});
$("div").overlay({top:180, closeOnClick: true, mask: {color: '#fff', loadSpeed: 100, opacity: 0.5}});
</script>
</html>
此代码有以下问题(按对这个问题的重要性排序) -
- 在 Chrome 8.0.552.231 中,“必需”验证器失败不会停止提交表单(它在 FF 中会)。
- 在 Chrome 中,与对话框相关的错误消息不可见,但会出现在文档正文中,并且只有在对话框关闭后才可见。
- 在 Firefox 4b7 中,验证器错误出现在输入下方,无论初始化验证器时的任何位置设置如何。默认情况下它应该出现在右侧。
- 在 FF 中,form.reset() 不会重置表单(它在 chrome 中会)。这可以通过在提交后第二次打开对话框来测试。乍一看似乎与 jquery 工具无关,但我想我会把它扔进去:)。
- 在 Chrome 中,字段边框最初不是红色(在 FF 中)
- 在 FF 中,字段边框在选中时不会变为蓝色(在 Chrome 中会变为蓝色)
- FF 和 Chrome 的错误消息文本不同
其他人看到相同的行为?是否可以修复该代码以按预期工作,并且在两种浏览器中都大致相同?干杯,