我是backbone.js和underscore.js的新手。我有一个注册和登录表格,处理验证错误。 当我提交未填写的表单时,我正在捕获错误。 当我把所有错误都放在表单上时,我很困惑。我只得到数组中所有表单元素的最后一个错误。我研究过,似乎无法找到解决方案。下面的代码段。
这个函数遍历数组,但只给出了数组中的最后一个索引而不是全部 错误消息。当我执行console.log时,我的控制台日志显示所有错误消息(error.message) 但是并没有像我所说的那样只在最后一个表格上显示所有这些。我做错了什么。
感谢您的帮助 提前感谢你。 我会发布完整的代码我得到它的工作,所以它可以帮助其他人。我;使用骨干1.1.2
PDH
validate: function(attrs, options) {
var errors = [];
ect...
}
showErrors: function(errors) {
_.each(errors, function (error) {
var controlGroup = this.$('.' + error.name);
controlGroup.addClass('errors'); //not sure if I need this
$("div.form-group").find('.help-inline').text(error.message);
}, this );
},
答案 0 :(得分:1)
而不是
$("div.form-group").find('.help-inline').text(error.message);
使用
$("div.form-group").find('.help-inline').append(error.message+"<br />");
在每个循环中,您将覆盖已存在的文本。因此,只有最后一个指数存在
答案 1 :(得分:0)
循环遍历错误div。从阵列中获取适当的错误。将错误设置为错误div的文本。
_.each($("div.form-group").find('.help-inline'), function(errorDiv, index){
$(errorDiv).text(errors[index]);
});
<强> FIDDLE 强>
答案 2 :(得分:0)
我弄清楚我的问题是什么,我可以踢自己没有看到明显的问题。我的代码是正确的问题是我在编写类,因为所有类都具有相同的名称。我不得不做一些改变 HTML代码。在我将所有类名相同之前,例如form-group。我将名称更改为表格组电子邮件 例如,它在我的验证中清除了几个问题。希望它能节省别人的时间 PDH
<div class="form-group email">
<label for="email2">email <span class="help-inline">
</span><input type="email" name="email"></label><br />
</div>
showErrors: function(errors) {
_.each(errors, function ( error, index) {
var controlGroup = this.$('.' + error.name);
controlGroup.addClass('errors');
controlGroup.find('.help-inline').text(error.message);
console.log(error.message);
}, this);
},