我为电子邮件注册表单编写了以下 jQuery 代码。
$(document).ready(function () {
var default_value = '<?php echo $email_text ?>';
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
$('#email').each(function () {
$(this).focus(function () {
if (this.value == default_value) {
this.value = '';
}
});
$(this).blur(function () {
if (this.value == '') {
this.value = default_value;
}
});
});
$('button#yes').hover(function () {
$(this).css('background', '#fff').css('cursor', 'not-allowed');
$('#email').css('background', '#ca9822');
}, function () {
$(this).css('background', '').css('cursor', '');
$('#email').css('background', '');
});
$('#email').keyup(function () {
if (this.value.length > 2 && this.value !== default_value && filter.test(this)) {
$('button#yes').unbind().css('background', '').css('cursor', '').click(function () {
showconfirm();
});
$('#email').css('background', '');
} else {
$('button#yes').unbind().hover(function () {
$(this).css('background', '#fff').css('cursor', 'not-allowed');
$('#email').css('background', '#ca9822');
}, function () {
$(this).css('background', '').css('cursor', '');
$('#email').css('background', '');
});
}
});
$("form#signupform").submit(function () {
. . .
它基本上做的是检查输入表单,然后启用“是”按钮,然后触发该showconfirm()
功能,这会带来一个真正的提交按钮,最终处理提交操作等。
问题是我只需要“确认”按钮来解决条款和隐私政策问题。我真的很想在第一个按钮上完成整个检查过程。我的意思是如果输入的电子邮件不符合某些条件,用户应该不能单击“是”。我可以让它工作到value.length > 2
(我在另一篇 SO 文章中读到,电子邮件的最小长度可以是 3 个字符,即“a@b”......这就是它的> 2
来源,如果你'想知道)直到value !== default_value
(默认值基本上是“您的电子邮件”,它从输入字段中清除并在输入字段中重新绘制,因为用户在输入任何自定义数据之前关注并模糊输入)。但是当我放入时,filter.test()
我总是会得到一个false
。
当然我在这里用错了,虽然我不知道怎么做。我以前在该submit
功能下使用它,效果很好。但是,正如我所说,我正在努力让这一切都在流程的第一部分发挥作用。真的,在submit
函数中,这最终成为重复代码等的麻烦,添加错误消息等,等等,等等。这就是我想切换它的原因。
请问有什么想法吗?