我正在验证一份工作正常的表单,但我不知道为什么表单在所有验证后都没有提交。
这是验证码:
$('#coupon_options').submit(function(e){
e.preventDefault();
var name = $('input[name="coupon_name"]'),
code = $('input[name="coupon_code"]'),
value = $('input[name="coupon_value"]'),
valid = $('input[name="coupon_valid"]'),
status = true;
if( $.trim(name.val()) == "" ){
name.css('border-color', '#ff0000');
status = false;
} else { name.removeAttr('style'); }
if( $.trim(code.val()) == "" ){
code.css('border-color', '#ff0000');
status = false;
} else { code.removeAttr('style'); }
if( $.trim(value.val()) == "" ){
value.css('border-color', '#ff0000');
status = false;
} else { value.removeAttr('style'); }
if( $.trim(valid.val()) == "" ){
valid.css('border-color', '#ff0000');
status = false;
} else { valid.removeAttr('style'); }
if( status == true ){ return status; }
else { return false; }
});
我知道在提交事件后停止刷新我使用了return false
,但我不确定返回true是否在这里工作?
我不想使用Ajax,只想在验证后提交。 这段代码有问题吗?
答案 0 :(得分:1)
删除:
e.preventDefault();
即使您return true;
也停止默认操作。
例如:
答案 1 :(得分:1)
e.preventDefault();
是问题,但是你应该注意,当你有多个基本上对不同元素执行相同操作的函数时,它永远不是一个好兆头,你可以简化你的代码:
$('#coupon_options').submit(function(e){
var status = true;
$('input[name="coupon_name"],input[name="coupon_code"],input[name="coupon_value"],input[name="coupon_valid"]').each(function(){
if($.trim($(this).val()) == ""){
$(this).css('border-color', '#ff0000');
status = false;
} else {
$(this).removeAttr('style');
}
});
return status;
});
您甚至可以使用$('input[name^="coupon_"]')
选择以该前缀开头的所有输入。