我有語義的UI形式:語義UI和流星JS:驗證表單不更改頁
<form class="ui form">
<div class="ui form segment">
<div class="ui field">
<label>Enter New Category Name</label>
<div class="ui input">
<input type="text" placeholder="Category Name" id="category-name-input">
</div>
</div>
<div class="ui submit button" id="add-category-btn">
ADD CATEGORY
</div>
</div>
</form>
我用這種形式來對我的頁面中輸入新的類別。 當我點擊了一個獨特的名字提交按鈕,表單通過驗證,我可以插入新的類別名稱進入我MONGO DB數據庫:
var settings = {
inline: true,
revalidate: true,
//on: 'blur',
onFailure: function(){
console.log('failed validation');
return false;
},
onSuccess:function(e){
console.log("onSuccess");
e.preventDefault;
ProductCategories.insert({category_name : editedText});
return false;
}
};
這是我第一次使用語義UI形式無需更改頁面。 這一次,我使用semantic-ui驗證來確保輸入的類別名稱是UNIQUE(因此尚未在數據庫中)並確保它不是空的。 如果我輸入一個唯一的名稱,然後單擊提交按鈕。它通過驗證。 然後它調用上面的回調onSuccess
並將類別名稱插入到MONGO DB數據庫中,並且由於Meteor是REACTIVE,頁面會自行更新以顯示新的類別。
我的問題是,在調用onSuccess
回調之後,Semantic-UI似乎再次驗證了表單。這使我處於錯誤消息不應該顯示時再次顯示的情況。 我被困在這種情況下......如果我什麼也沒做,只是將輸入字段的值保留爲點擊時的值,那麼此次驗證將再次檢查值與數據庫中的值並且它使表單失效,因爲該值不再是UNIQUE(因爲它剛插入)。 當調用onSuccess
時,我可以選擇使輸入字段再次爲空。但是,如果我這樣做,語義UI抱怨該字段是空的,它不應該是空的。
理想情況下,我想在onSuccess
回調中寫一些東西來告訴semantic-ui它已經完成驗證工作,這就是爲什麼它已經達到了onSuccess並且請不要REVALIDATE,因爲它會顯示錯誤消息我不想顯示.....
我試圖把:
$('form').form('clear')
和
$('form').form('reset')
內onSuccess
但我發現驗證發生在onSuccess
之後,因此重置表單或清除表單只會使字段爲空,並且語義UI表單抱怨沒有該字段的值。
有沒有辦法解決這個問題? 解決方案是什麼?
非常感謝您
嗨,好吧...我已經修正了這個錯字,但同樣的問題依然存在....任何其他可能的解決方案? – preston