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

时间:2015-06-08 13:18:17

标签: javascript forms validation meteor semantic-ui

我的表单遇到了很大的问题,我使用Semantic UI实时验证。

HTML:

<form class="ui form pin-form">                     
  <div class="field">
    <label>Email</label>
    <input placeholder="name@example.com" name="email_input" type="text">
  </div>
  <div class="ui buttons">
    <input type="submit" class="ui submit positive disabled button login-button" value="Log in">
  </div>
</form>

我自己添加了<form>代码并将提交内容发送到input,以便我可以访问常规submit form

实时验证来自Semantic UI和Meteor包:https://github.com/avrora/live-form-validator

在模板渲染上我这样做:

if (!this._rendered) {
this._rendered = true;
pinForm = $('.ui.form.pin-form');
pinForm.form({
    my_text_input: {
      identifier: 'email_input',
      rules: [
        {
          type: 'empty',
          prompt: 'Type your email address'
        },
        {
          type: 'email',
          prompt: 'This is not yet a valid email address'
        }
      ]
    }
  },
  {
    inline: true,
    on: 'blur',
    transition: 'slide down',
    onSuccess: function () {
      var submitButton = $('.ui.submit.button')
                submitButton.removeClass('disabled')
                return false
    },
            onFailure: function() {
                var submitButton = $('.ui.submit.button')
                submitButton.addClass('disabled')
            }
    })
}

这里的一个大问题是,使用return false即使单击提交按钮也不会提交表单,如果没有它,它会实时提交表单,这是我不想要的! / p>

任何人都可以看到解决方法或我是否需要以某种方式切换验证?

2 个答案:

答案 0 :(得分:0)

如果您想要Meteor.call,可以尝试在onSuccess功能中执行此操作。该软件包确实要求您在onSuccess功能中手动保存数据。

以下代码记录了两次电子邮件。

onSuccess: function () {
    console.log("Email: ", $("input[name=email_input]").val());
    // Submit your form here using a Meteor.call maybe?
    return false;
},

您也可以查看aldeed:autoform处理Meteor中的表单。

答案 1 :(得分:0)

这可能是所有SO的最愚蠢的问题。 (别担心,我问了这个问题,所以我只是在嘲笑自己!)

语义用户界面实际上提供了on: change设置,它将实时验证表单,而不是现在设置的on: blur

哦,伙计......