首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >语义UI onSuccess,在表单验证时不触发onFailure回调

语义UI onSuccess,在表单验证时不触发onFailure回调
EN

Stack Overflow用户
提问于 2016-02-09 15:58:08
回答 3查看 4.3K关注 0票数 0

在下面的代码中,验证用户名有一个值并且密码匹配,即使正在执行/强制执行验证规则,也不会触发onSuccess或onFailure回调。我已经独立地测试了所有其他部分,这个布局完全遵循文档,所以我排除了语法错误。除了下面使用的语法之外,我还尝试了$().form().onSuccess().onFailure()的格式,但是得到了一个"Uncaught : onSuccess不是函数“的格式。这里的小提琴:语义UI onSuccess,onFailure回调示例

代码语言:javascript
复制
$(function(){
    $('#main')
        .form({
            on: 'blur',
            fields: {
                username: {
                    identifier : 'username',
                    rules: [
                        {
                            type : 'empty'
                        }
                    ]
                },
                password1: {
                    identifier  : 'password1',
                    rules: [
                        {
                            type   : 'match[password2]',
                            prompt : 'Please enter the same value in both fields'
                        }
                    ]
                },
                password2: {
                    identifier  : 'password2',
                    rules: [
                        {
                            type   : 'match[password1]',
                            prompt : 'Please enter the same value in both fields'
                        }
                    ]
                }
            },
            onSuccess: function() {
                $(".ui.button[name='account']").removeClass('disabled');
                console.log('Success');
            },
            onFailure: function() {
                $(".ui.button[name='account']").addClass('disabled');
                console.log('Failure');
            }
        }
    );
});
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-08 10:58:41

关键是这样称呼它。$('#main').form(fieldRules, settings); onFailureonSuccess在设置中注册。

查看修改后的代码:

代码语言:javascript
复制
    $(function(){
        $('#main')
            .form({
                    username: {
                        identifier : 'username',
                        rules: [
                            {
                                type : 'empty'
                            }
                        ]
                    },
                    password1: {
                        identifier  : 'password1',
                        rules: [
                                {
                                    type: 'empty',
                              prompt: 'Please enter the password'
                                },
                            {
                                type   : 'match[password2]',
                                prompt : 'Please enter the same value in both fields'
                            }
                        ]
                    },
                    password2: {
                        identifier  : 'password2',
                        rules: [
                            {
                                type   : 'match[password1]',
                                prompt : 'Please enter the same value in both fields'
                            }
                        ]
                    }
                }, {
                    on: 'blur',
                  inline: true,
                  onSuccess: function() {
                    alert('Success');
                    return false; // false is required if you do don't want to let it submit

                    },
                    onFailure: function() {
                    alert('Failure');
                    return false; // false is required if you do don't want to let it submit                                            
                    }
                  });
    });
票数 2
EN

Stack Overflow用户

发布于 2017-08-07 17:06:22

我也遇到了这个问题。我什么都试过了,唯一能让onSuccess开火的方法就是这么做:

代码语言:javascript
复制
  const formValidated = $('.ui.form').form(
     {
        fields: {
           name: {
              identifier: 'name',
              rules: [ 
                 {
                    type   : 'empty',
                    prompt : 'Please enter a name for the camera'
                 }
              ]
           },
        }
     }
  )

  if ($(formValidated).form('is valid')) {
     this.handleSave();
  } else {
     return false;
  }
票数 0
EN

Stack Overflow用户

发布于 2022-07-04 03:40:26

在经历了几个小时的这个问题之后,我发现这个问题适合我(语义ui @2.4.1,jquery @3.1.1):

代码语言:javascript
复制
$(document).ready(function () {
  $('#message-center form').form({
    fields: {
      email: {
        identifier: 'email',
        rules: [
          {
            type: 'empty',
            prompt: 'Please enter your email.',
          },
          {
            type: 'email',
            prompt: 'Please enter a valid email.',
          },
        ],
      },
    },
    onSuccess: function (event) {
      event.preventDefault();
      sendMessage(event);
      return false;
    },
  });
});

注意到onSuccessfields位于相同的options对象上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35296463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档