【问题标题】:Losing my mind from jquery validate and knockout从 jquery 验证和淘汰赛中失去理智
【发布时间】:2011-09-08 04:35:18
【问题描述】:

我已经尝试这样做了好几个月,好几个月,好几个月,而且 个月。我真的因为试图让 Knockout 为我工作而流下了眼泪。

我有一些帖子可以追溯到去年试图做到这一点。一世 只是根本无法使用淘汰赛和 asp.net 进行验证 mvc.

如果我输入 $.validator.unobtrusive.parse("#__frmAspect"); 行,我 获得验证,但随后它不服从提交处理程序。如果我 把它拿出来,它服从提交处理程序,但它没有得到任何 验证。

这是我的代码 - 全部。 (我认为)

主视图

http://pastie.org/2016031

编辑器视图

http://pastie.org/2016043

查看模型

http://pastie.org/2016045

控制器和模型绑定器

http://pastie.org/2016052

HTML 输出

http://pastie.org/2016100

HtmlTags 类

http://pastie.org/2016107

助手

http://pastie.org/2016111

我已经坚持了 8 个月。任何人都可以 请帮我?我想要的只是将数据提交回服务器。一世 不想要ajax,我不想要回调。我不想要任何花哨的东西。 我只想在正确后将我的JSON 模型发送回服务器 客户端验证,并让它获取数据。这就是我想要的。我愿意 不想使用$.ajax 方法。我有我想做的理由 这样,它们与问题无关。

对 RP Niemeyer 的回应

是的,成功了!!!!!!!!!哦,我的上帝。我欠你的,过去 8 个月 我生命中的。我想给你寄一个含有原始卡路里的芝士蛋糕 品味和互联网。

我觉得我可以从这个问题的沮丧中冲出屏幕 让我。如果这个问题听起来很粗鲁,我很抱歉,但在哪里 我在网上见过这种东西。我确定任何其他开发人员 能够理解一个看似不存在的问题的挫败感 有答案。

我不知道你是怎么得出这个结论的,我不明白 正是它起作用的原因。

我用对象实例化视图模型尝试了同样的事情(其中 视图模型不是它自己的对象,而是另一个对象的实例) 它没有用。换句话说,如果我这样做..

var aspect = function () { 
  this.Id = ko.observable(); 
 // other variables, using ';' and 'this' keyword 
 this.Save = function() { 
   alert('We got to the save function'); 
 } 
} 

var viewModel = new aspect(); 
ko.applyBindings(viewModel, $("#__frmAspect")[0]); 
// attach the jquery unobtrusive validator 
$.validator.unobtrusive.parse("#__frmAspect"); 
// bind the submit handler to unobtrusive validation. 
$("#__frmAspect").data("validator").settings.submitHandler = 
viewModel.Save; 

这种方法不起作用。 我能麻烦您向我解释一下有什么不同吗?为什么?我是 完全迷失了。

【问题讨论】:

  • 我没有查看所有代码,但我认为您需要添加 return true;到方法的最后: submitHandler: function () { viewModel.Save();返回真; }
  • 它甚至从来没有命中那部分代码。我可以在那里运行警报,它甚至永远不会被触发。

标签: json asp.net-mvc-3 jquery-validate knockout.js


【解决方案1】:

我认为问题在于不显眼的库已经在表单上设置了验证,因此您实际上需要进入并设置 submitHandler 如下:

// attach the jquery unobtrusive validator
$.validator.unobtrusive.parse("#__frmAspect");

// bind the submit handler to unobtrusive validation.
$("#__frmAspect").data("validator").settings.submitHandler = viewModel.Save;

http://jsfiddle.net/rniemeyer/V8MhG/

【讨论】:

  • 是的,确实有效。我在 Knockout 论坛上回复了您的帖子,但我会在这里回复,以便您获得积分和积分。我要等几天,这样我就可以为此添加赏金并奖励你积分 - 因为这一直让我非常沮丧,以至于我真的认为你应该解决它。
  • 如果您愿意回答,我已经更新了我的问题,提供了更多信息。无论如何,我都会奖励你积分。非常感谢你做的这些。我希望我能理解你是怎么想出来的。
  • 我尝试了最基本的示例,它仍然有效:jsfiddle.net/rniemeyer/DNgeJ。必须是完整版代码的其他内容。我将在 KO 论坛上与您一起解决问题。
  • 如承诺的那样,我将赏金设置为 100 分,并在 SO 允许时在 24 小时内奖励。再次感谢您所做的一切。
猜你喜欢
  • 1970-01-01
  • 2011-08-09
  • 2017-01-27
  • 1970-01-01
  • 2012-02-18
  • 2012-03-08
  • 2015-02-03
  • 2013-06-08
  • 2012-11-04
相关资源
最近更新 更多