- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有 string 属性、int 属性和两个其他模型列表的 knockout 模型。在 View 中,我尝试验证 knockout 对象中的属性,此时只需确保它们存在。
我正在使用 Knockout.Validation 库,使用扩展。
我遇到的问题是,当我单击按钮发送验证请求时,出现 JavaScript 错误self.isValid 不是函数
我在网上查了一下,似乎其他人也遇到了问题,只是他们的解决方案对我不起作用。
Javascript模型
编辑测试步骤
var StringParameterViewModel = function(data) {
var self = this;
if (data != null) {
ko.mapping.fromJS(data, stringParameterMapping, self);
} else {
self.ParameterName = ko.observable().extend({
required: {message: 'Please enter a parameter name.'}
});
self.StringValue = ko.observable().extend({
required: { message: 'A value for the parameter is needed.' }
});
}
}
var XmlParameterViewModel = function (data) {
var self = this;
if (data != null) {
ko.mapping.fromJS(data, xmlParameterMapping, self);
} else {
self.ParameterName = ko.observable().extend({
required: true
});
self.XmlValue = ko.observable().extend({
required: true
});
}
}
var xmlParameterMapping = {
craete: function(options) {
return XmlParameterViewModel(options.data);
}
}
var stringParameterMapping = {
create: function(options) {
return StringParameterViewModel(options.data);
}
}
var editTestStepMapping = {
create: function(options) {
return EditTestStepViewModel(options.data);
}
}
var EditTestStepViewModel = function(data) {
var self = this;
if (data != null) {
ko.mapping.fromJS(data, {}, self);
} else {
self.StringParameters = ko.observableArray();
self.XmlParameters = ko.observableArray();
self.TestStepName = ko.observable().extend({
required: true
});
}
self.saveTestStep = function() {
var dataToSend = ko.mapping.toJSON(self);
$.ajax({
url: "/Home/SaveEdit/",
type: "POST",
contentType: "application/json",
data: dataToSend
});
};
self.Errors = ko.validation.group(self);
self.checkValid = function () {
if (self.isValid()) {
alert('All ok!');
} else {
self.Errors.showAllMessages();
}
}
}
var validationOptions = {
insertMessages: true,
decorateElement: true,
errorElementClass: 'errorCSS',
messagesOnModified: true,
debug: true,
grouping: {
deep: true,
observable: false //Needed so added objects AFTER the initial setup get included
}
};
ko.validation.init(validationOptions, true);
查看
@using System.Web.Script.Serialization
@model MvcNewPatternsDemo.Models.EditTestStepViewModel
@{ string data = new JavaScriptSerializer().Serialize(Model);}
@{
ViewBag.Title = "Home Page";
}
@section scripts{
<script src="~/Scripts/knockout-3.4.0.js"></script>
<script src="~/Scripts/knockout.validation.js"></script>
<script src="~/Scripts/knockout.mapping-latest.js"></script>
<script src="~/Scripts/jquery-1.10.2.js"></script>
<script src="~/Scripts/EditTestStep.js"></script>
<script type="text/javascript">
var editTestStepViewModel = new EditTestStepViewModel(@Html.Raw(data));
ko.applyBindingsWithValidation(editTestStepViewModel);
</script>
}
<form>
<input class="form-control" name="ParameterName" data-bind="value: TestStepName"/>
<input class="form-control" name="TestStepId" data-bind="value: TestStepId"/>
<table class="table table-striped">
<tr>
<th>StringParameters</th>
</tr>
<tbody data-bind="foreach: StringParameters">
<tr>
<td class="form-group"> <input name="ParameterName" class="form-control input-sm" data-bind="value: ParameterName"/></td>
<td class="form-group"> <input name="StringValue" class="form-control input-sm" data-bind="value: StringValue"/></td>
</tr>
</tbody>
</table>
<table class="table table-striped">
<tr>
<th>XmlPara</th>
</tr>
<tbody data-bind="foreach: XmlParameters">
<tr>
<td class="form-group"> <input name="ParameterName" class="form-control input-sm" data-bind="value: ParameterName" /></td>
<td class="form-group"> <input name="XmlValue" class="form-control input-sm" data-bind="value: XmlValue" /></td>
</tr>
</tbody>
</table>
</form>
<div class="row">
<button data-bind="click: saveTestStep" type="submit">Save Test Step</button>
<button data-bind="click: checkValid"type="button">Check Valid</button>
</div>
模型
namespace MvcNewPatternsDemo.Models
{
public class TestStepDisplayModel
{
public int TestStepId { get; set; }
public string TestStepName { get; set; }
}
public class StringParameterViewModel
{
public string ParameterName { get; set; }
public string StringValue { get; set; }
}
public class XmlParameterViewModel
{
public string ParameterName { get; set; }
public string XmlValue { get; set; }
}
[Serializable]
public class EditTestStepViewModel
{
public string TestStepName { get; set; }
public int TestStepId { get; set; }
public List<StringParameterViewModel> StringParameters { get; set; }
public List<XmlParameterViewModel> XmlParameters { get; set; }
public EditTestStepViewModel()
{
this.StringParameters = new List<StringParameterViewModel>();
this.XmlParameters = new List<XmlParameterViewModel>();
}
}
}
对 Controller 的 ajax 调用有效,并且正在发送对象中的所有数据,我只需要验证即可运行。
最佳答案
我在您的 javascript 中没有看到您注册扩展程序的行。
尝试在末尾添加此内容:
ko.validation.registerExtenders();
关于javascript - knockout 验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39577489/
我在使用以下代码时遇到问题: function http_file_exists($url){ $f=fopen($url,"r"); if($f){ fclose($f); retu
我已经通过 Git 部署到 Azure 几个月了,没有出现重大问题,但现在我似乎遇到了一个无法克服的错误。 我创建了一个新的 Azure 网站,为正在开发的项目创建单独的预览链接。我在新站点上设置了
我已经通过flutter创建了一个App并完成了它,我想在flutter文档中阅读时进行部署。 我收到此错误: FAILURE: Build failed with an exception. * W
我在Windows 10中使用一些简单的Powershell代码遇到了这个奇怪的问题,我认为这可能是我做错了,但我不是Powershell的天才。 我有这个: $ix = [System.Net.Dn
我正在尝试使用 RapidJSON 解析从服务器接收到的数据。以下是收到的确切字符串: [ { "Node": "9478149a08f9", "Address": "172.17
我尝试为 ios 编译 OpenCV。我总是收到这些错误。我用不同版本的opencv试了一下,结果都是一样的。 我运行这个:python 平台/ios/build_framework.py ios_o
我在一台机器上做基本的发布/订阅,我的客户端是 StackExchange-Redis 的 C# 客户端,我在同一台机器上运行基于 Windows 的 Redis 服务器(服务器版本 2.8.4) 当
我有这段代码,但无法执行,请帮我解决这个问题 连接 connect_error) { die ("connection failed: " . $terhubung->connect_erro
我在 tomcat 上运行并由 maven 编译的 Web 应用程序给出了以下警告和错误。我可以在本地存储库中看到所有 JAR,但有人可以帮忙吗。 WARNING: Failed to scan JA
我正在 Windows 8 上使用 Android Studio 开发一个 android 应用程序,我正在使用一些 native 代码。突然间我无法编译我的 C 文件。当我运行 ndk-build
下面的代码对类和结构的成员进行序列化和反序列化。序列化工作正常,但我在尝试使用 oarch >> BOOST_SERIALIZATION_NVP(outObj); 反序列化时遇到了以下错误; 代码中是
如果我运行此命令“rspec ./spec/requests/api/v1/password_reset_request_spec.rb”,此文件中的所有测试都会通过。 但是,当我运行“rspec”时
我在尝试执行测试以使用 Protractor 上传文件时出错,我的代码是这个 it('it should be possible to upload a file', function() {
System.loadLibrary("nativefaceswap"); 当我运行我的应用程序时,我在 Android Studio 中发现了此类错误。在logcat中显示: java.lang.U
我希望有人能帮助我!使用任何方法或命令行的任何 SSL/HTTPS 调用均无效。 我在 Windows 10 中使用 Ubuntu Server 18.04 作为子系统。我的问题是昨天才开始出现的,因
通过删除这两个值将日期字段从 null=True 和 Blank=True 更改为 required 时,使用 db.alter 命令时遇到问题。 当以下行被注释掉时,迁移运行不会出现问题。
我第一次使用 Heroku 尝试创建应用程序(使用 SendGrid 的 Inbound Parse Webhook"和 Twilio SMS 通过电子邮件发送和接收 SMS 消息)。通过 Virtu
我正在将我的 swift 项目更新到 Xcode 7 上的 Swift 2.0。xcode 在构建项目时报告了以下错误: 命令/Applications/Xcode.app/Contents/Deve
在我的代码中,SSL 库函数 SSL_library_init() 没有按预期返回 1。我如何才能看到它返回了什么错误? 我在 SSL_library_init() 之后调用了 SSL_load_er
我正在尝试运行在以下链接中找到的答案: Asynchronously Load the Contents of a Div 但是当我这样做时,我会遇到我不太理解的错误。 我的代码: $(documen
我是一名优秀的程序员,十分优秀!