2014-09-03 87 views
0

我是backbone.js和underscore.js的新手。我有一個註冊和登錄表單,處理驗證錯誤。 我在提交未填寫表單時捕獲錯誤。 當我把所有的錯誤放在窗體上時,我都陷入了困境。我只獲得數組中所有表單元素的最後一個錯誤。我研究並似乎無法找到解決方案。下面的代碼片段。無法遍歷_.each

此函數遍歷數組,但僅給出數組中最後一個索引,而不是所有的 錯誤消息。當我執行console.log(error.message) 時,我的控制檯日誌顯示了所有的錯誤消息,但是並沒有在窗體上僅顯示最後一個狀態。我究竟做錯了什麼。

您的幫助表示感謝 感謝您提前。 我會發布完整的代碼,我得到它的工作,所以它可以幫助別人。我; M用骨幹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); 
}, 

回答

1

$("div.form-group").find('.help-inline').text(error.message); 

使用

$("div.form-group").find('.help-inline').append(error.message+"<br />"); 

在每一個循環,而不是要覆蓋的是已經存在的文本。因此,只有最後一個索引會出現

+0

謝謝你的快速回復,追加的作品,但現在我得到在每行每個錯誤時,它應該只對數組中的每個元素一個錯誤。 – user2280852 2014-09-03 19:00:32

+0

請使用
這樣的標籤。$(「div.form-group」)。find('。help-inline')。append(error.message +「
」); – mallik 2014-09-04 06:15:10

0

循環通過錯誤div。從數組中獲取適當的錯誤。將錯誤設置爲錯誤div的文本。

_.each($("div.form-group").find('.help-inline'), function(errorDiv, index){ 

$(errorDiv).text(errors[index]); 
}); 

FIDDLE

+0

嗨,這不適用於我錯誤是一個對象,其中包含有關錯誤的所有信息 – user2280852 2014-09-04 16:56:48

+0

var errors = []; 警報(「錯誤被捕獲」); //錯誤處理 if(!attrs.email){error.push({name:'email',message:'請輸入一個有效的電子郵件地址。如果(errors.length> 0){ return errors.length> 0?錯誤:錯誤; } – user2280852 2014-09-04 17:07:11

0

我想通了什麼我的問題是,我可以踢自己沒有看到明顯。我所擁有的代碼是正確的,問題在於我寫完這個類,因爲所有的類都有相同的名字。我必須對我的 HTML代碼進行一些更改。在我將所有類名稱都設置爲相同之前,例如form-group。例如,我將該名稱更改爲表單組電子郵件 ,並在驗證中清除了幾個問題。希望這樣可以節省別人的時間 PDH

<div class="form-group email"> 
<label for="email2">email &nbsp;<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); 
},