【发布时间】:2014-11-17 07:54:03
【问题描述】:
这是我在stackoverflow中的第一个问题,请理解。
我已经做了什么
HTML。我的表单:
<form>
<div>
<label>Surname</label>
<input type="text" class="formInput" value="" name="form[surname]">
</div>
<div>
<label>Name</label>
<input type="text" class="formInput" value="" name="form[name]">
</div>
<div>
<label>Phone</label>
<input type="text" class="formInput swdt phone" value="" name="form[phone]" maxlength="16" autocomplete="off">
</div>
<div>
<label>E-mail</label>
<input type="mail" class="formInput" value="" name="form[email]">
</div>
<div>
<label>City</label>
<input type="text" class="formInput" value="" name="form[city]">
</div>
<div>
<label>Question</label>
<textarea class="formInput w100" value="" name="form[question]" type="text"></textarea>
</div>
<div>
<label>captcha</label><input type="text" class="captchaFld formInput" required="" name="form[verifyCode]">
</div>
<div>
<button class="disabled" id="submit" type="submit" disabled="">send</button>
</div>
</form>
JS. 我添加了一个必填字段数组(这是给程序员的,所以他们可以自己将所有需要的字段添加到这个数组中)并且只要用户没有填写数组中的所有字段“发送”按钮被禁用。
var requiredFields = ["surname", "name", "phone", "email", "city", "verifyCode", "question"];
JS. 这是我的 each 函数,它遍历数组的所有元素:
$.each( requiredFields, function( i, l ) {
$(".formInput[name*='form[" + l + "]']").each(function () {
$(this).keyup(function () {
$("#submit").prop("disabled", chkAllFields());
});
});
});
JS. 这是我的函数 chkAllFields() 再次运行(((通过数组的所有元素并检查字段是否为空:
function chkAllFields() {
var valid = false;
$.each( requiredFields, function( i, l ) {
$(".formInput[name*='form[" + l + "]']").each(function () {
if (valid) {
$("#submit").addClass('disabled');
if ($(".formInput[name*='form[" + l + "]']").val() == '') {
$(this).addClass('redBorder');
}
else {
$(this).removeClass('redBorder');
}
return valid;
}
else {
$("#submit").removeClass('disabled');
var input = $.trim($(this).val());
valid = !input;
}
});
});
return valid;
}
我需要完成什么
- 我需要将“redBorder”类添加到所有必需的和空的字段(当用户键入时),除了现在填充的字段;
- 并且在用户“取消聚焦”时的“模糊”方法上,必须删除所有“redBorder”类。
目前它适用于错误(红色边框很奇怪),我不知道在哪里可以找到修复程序..
JS 小提琴
这是我在JSFIDDLE上的代码示例
提前致谢。
【问题讨论】:
-
我想这是最干净的解决方案:jsfiddle.net/xzNPh/25
-
这很好,但是如果我需要根据填充的字段(例如 .prop)向“发送”按钮添加和删除类“禁用”怎么办?
-
这将是与其他验证相同的过程。
-
谢谢!!!你的决定真的很短很正确!但是一件事当我专注于不键入时,如何更改以向所有文件添加红色边框?我的意思是它们都是正确的:focus 和 keyup,但是如何结合这两种方法呢?
标签: javascript jquery arrays input field