jquery - 提交前监听语义 UI 表单验证错误

标签 jquery forms validation modal-dialog semantic-ui

使用语义 UI 表单、模式和验证,我在模式中有一个表单,并且如果表单无效(提交时会发生这种情况),我不希望模式关闭。

阻止模式关闭的唯一方法是向提交按钮添加一个 disabled 类。

我想(实时)监听表单并根据当前表单验证状态打开和关闭 disabled 类。

我只能在提交表单后才能使其工作,但不能实时工作

$('#myForm')
    .form({
        title: {
            identifier  : 'title',
            rules: [
                {
                    type   : 'empty',
                    prompt : 'Please enter a title'
                },
                {
                    type   : 'length[2]',
                    prompt : 'At least 6 characters'
                }
            ]
        }
    },
    {
        onSuccess: function() {
            $('#submit').removeClass('disabled');
        },
        onFailure: function() {
            $('#submit').addClass('disabled');
        }
    }
);

最佳答案

不要使用禁用来提交,而是确保即使单击提交(模式批准)按钮,模式也保持打开状态,并将关闭模式的决定传递给语义 UI 表单验证事件(即 onSuccess)。

所以类似这样的东西:

$('.ui.modal').modal({
        onApprove : function() {
          //Submits the semantic ui form
          //And pass the handling responsibilities to the form handlers,
          // e.g. on form validation success
          $('.ui.form').submit();
          //Return false as to not close modal dialog
          return false;
        }
    });

var formValidationRules =
{
    title: {
        identifier  : 'title',
        rules: [
            {
                type   : 'empty',
                prompt : 'Please enter a title'
            },
            {
                type   : 'length[2]',
                prompt : 'At least 6 characters'
            }
        ]
    }
}

var formSettings =
{
    onSuccess : function() 
    {
      //Hides modal on validation success
      alert("Valid Submission, modal will close.");
      $('.modal').modal('hide');
    }
}

$('.ui.form').form(formValidationRules, formSettings);

请注意,“OnApprove”事件仅在您单击类为“ok”的模式按钮时触发。 所以你需要一个像这样的模态按钮:

<div class="ui ok green basic inverted button">
  <i class="checkmark icon"></i>
  Submit
</div>

这是我创建的扩展工作插件代码来演示这一点: http://plnkr.co/edit/5fK7UuJIm7QTJGiu23NL?p=preview

关于jquery - 提交前监听语义 UI 表单验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30033396/

相关文章:

Java Swing 重绘和重新验证并不总是有效

c# - 选定的选项

javascript - 有没有一种方法可以检查 javascript 以毫秒为单位执行一个函数需要多长时间?

jquery - Bootstrap 轮播指示器 > 事件指示器不会改变

javascript - 如何在 AngularJS 中显示数组表单字段的验证错误?

excel - 忽略数据验证列表中的重复条目

c# - .aspx.cs(代码隐藏)或 BLL 或两者中的验证代码?

javascript - 如何防止按键事件出现警报框后重新加载页面?

javascript - 关于将动态数据输入到 html 页面的表单的建议

javascript - 如何使用 AJAX 生成表单?