语义UI和Meteor 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;
  }
};

这是我第一次使用Semantic-UI表单而无需更改页面。这次,我使用语义UI验证来确保输入的类别名称是UNIQUE(因此不在数据库中),并确保它不是EMPTY。如果我输入的名称是唯一的,请单击“提交”按钮。它通过了验证。然后,它onSuccess按上述方式调用回调并将类别名称插入MONGO DB数据库中,并且由于Meteor为REACTIVE,因此页面会更新自身,显示新的类别。

我的问题是,在调用onSuccess回调之后,Semantic-UI似乎再次验证了表单。这使我处于一种错误消息的状态,错误消息应在不应该出现的情况下再次显示。我陷入了这种情况....如果我什么也不做,只是保持输入字段的值保持不变,则单击该字段时,则这次验证将再次对照数据库中的值检查该值,然后它使表单无效,因为该值不再是UNIQUE(因为它刚刚被插入)。我可以选择在onSuccess调用时再次使该输入字段为空但是,如果这样做,语义UI会抱怨该字段为空,并且不应为空。

理想情况下,我想在onSuccess回调中写一些内容来告诉语义UI,它已经完成了验证工作,这就是为什么它达到onSuccess的原因,请不要重新验证,因为它将显示我不知道的错误消息要显示...。

我试着把:

$('form').form('clear')

$('form').form('reset')

在内部,onSuccess但是我发现验证是在onSuccess因此重置表格或清除表格之后才发生的,只会使该字段为空,而语义UI表单则抱怨该字段没有值。

有没有解决的办法?有什么解决方案?

非常感谢你

kite_n_code

我在表单验证中遇到了类似的问题。即,在表单重新验证之后,即使验证是正确的,它仍然会出现错误消息。

发生此问题的原因是,尽管您清除并重置了表单

$('form').form('clear')
$('form').form('reset')

表单ui-message类仍然看起来像这样(即'.error'类仍然包括在内):

<div class="ui error message">

在表单验证触发错误消息之前,它看起来类似于:

<div class="ui message">

请注意,触发表单验证错误消息后,“。error”类已添加到ui-message。

我解决此问题的方法只是使用jquery从ui消息中删除“ .error”类。这可能是黑客行为,也可能是语义UI设计方式中的一个怪癖,而此行为未得到正确记录吗?

这里有一些代码片段来演示我解决问题的方式。首先是模式设置,然后是resetForm()函数,以防止错误消息再次出现。

$('.ui.modal.candEntry').modal({
                onShow: function () {
                    $('#email').val(val.emailSearch);  // set the email on modal
                },
                onHide: function () {
                    resetForm();
                },
                onApprove: function () {
                    var ok = validateCandidateModal();
                    if (ok) {
                        Session.set('updateJobAlert', false);
                        var modalContents = $('.candAdd').form('get values');
                        // add the record to DB
                        var result = Meteor.call('insertCandidate', modalContents);
                        console.log('meteor insert '+result);
                        Router.go('somewhere', { email: modalContents.email } );
                    }
                    return ok
                },
                transition: 'horizontal flip'
            }).modal('show');

防止错误消息再次通过成功验证的方法...

function resetForm() {
var candAdd = $('.candAdd');
candAdd.form('reset');
candAdd.form('clear');
// remove the error class so it wont show error msg ( semantic-ui bug ? )
candAdd.removeClass('error');

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用语义UI和Meteor提交实时验证的表单?

来自分类Dev

如何在不刷新页面的情况下更改路线和内容?(对机器人友好)

来自分类Dev

是否可以在不刷新角度页面的情况下重新实例化服务和工厂?

来自分类Dev

如何在不提交表单的情况下验证表单,并通过jquery mobile和jquery验证转到其他页面?

来自分类Dev

Rails错误表单字段验证CSS和语义UI

来自分类Dev

如何使用Express和Connect-Flash在不刷新页面的情况下显示Flash消息?

来自分类Dev

如何在不重新加载页面的情况下更改标签的类属性和应用样式

来自分类Dev

如何在不重新加载页面的情况下更改标签的类属性和应用样式

来自分类Dev

如何在不刷新页面的情况下对表单使用验证?

来自分类Dev

在不更改我当前的Ubuntu桌面的情况下安装Ubuntu Studio应用程序和性能(内核)

来自分类Dev

UI-Router for Angular:是否可以在不重新加载页面的情况下更新位置

来自分类Dev

如何在不刷新页面的情况下更改表单输入中的预览值

来自分类Dev

FB评论和共享在不刷新页面的情况下不会加载

来自分类Dev

如何在不重新加载页面的情况下刷新div和mysql代码

来自分类Dev

如何在不重新加载页面的情况下刷新div和mysql代码

来自分类Dev

如何在不加载页面的情况下进行存储和目录列表

来自分类Dev

语义UI 1.6下拉输入和Angular.JS ng-options

来自分类Dev

更改语义UI的分页图标

来自分类Dev

Next.js 和语义 UI、Tab 元素、错误:元素类型无效

来自分类Dev

如何在不丢失导航栏UI的情况下更改SwiftUI背景?

来自分类Dev

ZF2表单过滤器和验证器。在哪些情况下,验证程序首先执行?

来自分类Dev

ZF2表单过滤器和验证器。在哪些情况下,验证程序首先执行?

来自分类Dev

如何在不使用任何templateresolver的情况下如何使用thymeleaf命名空间包含页面的页眉和页脚?

来自分类Dev

如何在不使用MathJax刷新页面的情况下动态呈现Tex和LaTex公式?

来自分类Dev

如何在不重新加载页面的情况下使用laravel ajax发布和获取评论?

来自分类Dev

如何在不重新加载 JSON 更新页面的情况下更新 div 的类和内容

来自分类Dev

如何在不更改Javascript页面的情况下访问用户输入的电子邮件

来自分类Dev

如何在不刷新angular8页面的情况下更改url的值

来自分类Dev

如何在不更改Javascript页面的情况下访问用户输入的电子邮件

Related 相关文章

  1. 1

    如何使用语义UI和Meteor提交实时验证的表单?

  2. 2

    如何在不刷新页面的情况下更改路线和内容?(对机器人友好)

  3. 3

    是否可以在不刷新角度页面的情况下重新实例化服务和工厂?

  4. 4

    如何在不提交表单的情况下验证表单,并通过jquery mobile和jquery验证转到其他页面?

  5. 5

    Rails错误表单字段验证CSS和语义UI

  6. 6

    如何使用Express和Connect-Flash在不刷新页面的情况下显示Flash消息?

  7. 7

    如何在不重新加载页面的情况下更改标签的类属性和应用样式

  8. 8

    如何在不重新加载页面的情况下更改标签的类属性和应用样式

  9. 9

    如何在不刷新页面的情况下对表单使用验证?

  10. 10

    在不更改我当前的Ubuntu桌面的情况下安装Ubuntu Studio应用程序和性能(内核)

  11. 11

    UI-Router for Angular:是否可以在不重新加载页面的情况下更新位置

  12. 12

    如何在不刷新页面的情况下更改表单输入中的预览值

  13. 13

    FB评论和共享在不刷新页面的情况下不会加载

  14. 14

    如何在不重新加载页面的情况下刷新div和mysql代码

  15. 15

    如何在不重新加载页面的情况下刷新div和mysql代码

  16. 16

    如何在不加载页面的情况下进行存储和目录列表

  17. 17

    语义UI 1.6下拉输入和Angular.JS ng-options

  18. 18

    更改语义UI的分页图标

  19. 19

    Next.js 和语义 UI、Tab 元素、错误:元素类型无效

  20. 20

    如何在不丢失导航栏UI的情况下更改SwiftUI背景?

  21. 21

    ZF2表单过滤器和验证器。在哪些情况下,验证程序首先执行?

  22. 22

    ZF2表单过滤器和验证器。在哪些情况下,验证程序首先执行?

  23. 23

    如何在不使用任何templateresolver的情况下如何使用thymeleaf命名空间包含页面的页眉和页脚?

  24. 24

    如何在不使用MathJax刷新页面的情况下动态呈现Tex和LaTex公式?

  25. 25

    如何在不重新加载页面的情况下使用laravel ajax发布和获取评论?

  26. 26

    如何在不重新加载 JSON 更新页面的情况下更新 div 的类和内容

  27. 27

    如何在不更改Javascript页面的情况下访问用户输入的电子邮件

  28. 28

    如何在不刷新angular8页面的情况下更改url的值

  29. 29

    如何在不更改Javascript页面的情况下访问用户输入的电子邮件

热门标签

归档