【问题标题】:Make a standard POST form validation in Knockout在 Knockout 中进行标准 POST 表单验证
【发布时间】:2013-04-04 12:37:22
【问题描述】:

为了允许在提交之前对表单进行验证, 我想通过我定义的 Submit 方法进行简单的 HTTP POST 提交。

视图代码:

   <form data-bind="submit: BaseSubmit" id="FormId">
      <!-- Some rows ... -->
      <button type="submit">Create</button>
   </form>

关于 JS 的行为

this.viewModel.BaseSubmit = 
   function(formElements) {
      //Here the code to make the submit redirection
    };

这可能吗? 提前致谢。

【问题讨论】:

  • 您要进行 AJAX POST 吗?
  • 嗯,我更喜欢标准提交。但如果不可能,我将使用 $.ajax

标签: mvvm knockout.js


【解决方案1】:

验证成功后,请确保来自绑定处理程序的 return true

this.viewModel.BaseSubmit = 
    function(formElements) {
        if (/* validation is successful */) {
            return true;
        } else {
            /* handle validation errors */
        }
    };

示例: http://jsfiddle.net/CCNtR/22/

来自the documentation

默认情况下,Knockout 将阻止事件采取任何默认操作。例如,如果您使用事件绑定来捕获输入标签的按键事件,浏览器将只会调用您的处理函数,并且不会将键的值添加到输入元素的值中。一个更常见的例子是使用 click 绑定,它在内部使用这个绑定,你的处理函数将被调用,但浏览器不会导航到链接的 href。这是一个有用的默认值,因为当您使用点击绑定时,通常是因为您将链接用作操作视图模型的 UI 的一部分,而不是作为指向另一个网页的常规超链接。

但是,如果您确实想让默认操作继续进行,只需从您的事件处理函数中返回 true

【讨论】:

  • 在看到你的回答的那一刻,我在想“当然,要允许onSubmit,相关方法应该返回true”......这里的原则相同......谢谢你的帮助。
猜你喜欢
  • 2017-02-04
  • 2015-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-10
  • 1970-01-01
  • 1970-01-01
  • 2012-07-26
相关资源
最近更新 更多