【发布时间】:2017-10-02 20:57:02
【问题描述】:
我有一个表单验证,我在输入下方插入错误,让用户知道他们错过了信息。我最初遇到了一个错误,即在多次单击提交时没有信息/不正确的电子邮件形式出现多个错误消息。
当满足失败的正则表达式的空名称的条件时,我解决了我为按钮设置禁用属性的问题。然而它又产生了一个新问题——一旦提交的属性被设置为禁用,它就是永久的。
我目前的javascript如下:
// Login validation
$('#customer_login').submit(function(e) {
// gets email input value
var emailinput = $('#customer_email').val();
// login page password value
var pwdinput = $('#customer_password').val();
if ($('input').length > 1) {
$('#customer_login :submit').attr('disabled', false);
}
// if it fails error and preventDefault otherwise submit
if (emailReg.test(emailinput) === false || emailinput === '') {
e.preventDefault();
$('#customer_login :submit').attr('disabled', true);
$('#customer_email').css('border-color', '#f84141');
$('#customer_email').after('<br><span class="field-error">Please enter valid email</span>');
}
// if password field is blank prompt user to put it in
if (pwdinput === '') {
e.preventDefault();
$('#customer_login :submit').attr('disabled', true);
$('#customer_password').css('border-color', '#f84141');
$('#customer_password').after('<br><span class="field-error">Please enter your password</span>');
}
});
作为对我的错误的潜在补救措施,我尝试在输入中有内容时取消禁用,我在这里尝试这样做:
if ($('input').length > 1) {
$('#customer_login :submit').attr('disabled', false);
}
这在全局范围内本身不起作用。我尝试将此条件嵌套在每个检查表单输入值的 if 语句中,但这也不起作用。说了这么多,给我留下了 3 个问题:
目前,当我在控制台中运行
$('input').length时,它总是返回48,即使我的输入为空。为什么空输入会返回大于零的值?-
我的测试电子邮件是 25 个字符,密码是 16 所以 25 + 16 = 41。即使我的测试电子邮件并在字段中传递,
$('input').length的值仍然是 48。为什么? 在控制台中运行
$('input').val().length作为检查总是返回0- 为什么会这样?
我有一个 jsfiddle,但出现错误:{"error": "Please use POST request"} 尽管有 form action="POST"。更改为 form method="POST" 返回:
{"error": "Shell form does not validate{'html_initial_name': u'initial-js_lib', 'form': <mooshell.forms.ShellForm object at 0x358a910>, 'html_name': 'js_lib', 'html_initial_id': u'initial-id_js_lib', 'label': u'Js lib', 'field': <django.forms.models.ModelChoiceField object at 0x3661710>, 'help_text': '', 'name': 'js_lib'}{'html_initial_name': u'initial-js_wrap', 'form': <mooshell.forms.ShellForm object at 0x358a910>, 'html_name': 'js_wrap', 'html_initial_id': u'initial-id_js_wrap', 'label': u'Js wrap', 'field': <django.forms.fields.TypedChoiceField object at 0x3661290>, 'help_text': '', 'name': 'js_wrap'}"}
https://jsfiddle.net/a4d5tLuh/2/
实现以下两个 stackoverflow 答案均未成功:
jsfiddle error {"error": "Please use POST request"} when submitting a form
【问题讨论】:
-
你应该使用 loader 代替。这是链接,w3schools.com/howto/howto_css_loader.asp
-
$('input')返回一个 元素的数组。我怀疑你有 48 个。
标签: javascript jquery html forms