标签: knockout-validation

如何根据事件更改敲除验证

我目前正在使用敲除验证来对表单进行验证:

HTML

<div>
    <span>Client</span><input type="text" data-bind="value:Client" />
</div>
<div>
    <span>IsMarried</span><input type="checkbox" data-bind="value:IsMarried" />
</div>
<div>
    <span>Spouse</span><input type="text" data-bind="value:Spouse" />
</div>
Run Code Online (Sandbox Code Playgroud)

JS

function HouseHold() {
    var self = this;
    self.Client = ko.observable().extend({required:true});
    self.IsMarried = ko.observable();
    self.Spouse = ko.observable().extend({required:{ onlyIf:function(){ return self.IsMarried();}}});
}
Run Code Online (Sandbox Code Playgroud)

目前,当选中IsMarried复选框时,配偶字段将不会正确验证,直到输入一个值然后清除.

有没有什么办法可以根据事件修改我的knockout viewmodel上的绑定,或者让验证更快地发生?

knockout.js knockout-validation

2
推荐指数
1
解决办法
4381
查看次数

淘汰消毒数字

我正在使用knockout和映射插件来自动创建我的视图模型.我在视图模型中有一堆金额,我绑定到文本框.当用户更改文本框中的金额时,我想要的是确保他们输入的是一个数字,并且它大于0,如果不是,我想用0替换他们输入的内容.这似乎是它应该很简单......使用自定义绑定或订阅功能.

我正在阅读的关于敲门验证的所有内容都涉及扩展器和读/写计算的observable,或者添加另一个插件(例如jquery验证).对于这种情况,它们似乎都有点过分,并且必须为要验证的每个observable显式声明扩展器/计算的observable.我有很多使用映射插件自动创建的金额,所以这似乎不合理.

任何帮助将不胜感激!

knockout-mapping-plugin knockout-2.0 knockout.js knockout-validation

1
推荐指数
1
解决办法
2871
查看次数

通过敲除验证进行验证

使用knockout.js(和敲除验证)我有这个:

self.nickname = ko.observable("").extend({
    required: true,
    minLength: 3
});
Run Code Online (Sandbox Code Playgroud)

<input type="text" data-bind="value: nickname" class="short" maxlength="30" />
<div class="formRow rowErrorMsg" data-bind="visible: nickname.isValid() == false"><span class="staticImages staticImagesError"></span> <?php text("Enter a valid username") ?></div>
Run Code Online (Sandbox Code Playgroud)

但问题是,当"昵称"无效时,请在输入控件旁边输入一个文本.带有错误消息的DIV开始可见,然后正常工作.

我需要这样做:

  1. 当"昵称"无效时,只需使用我的自定义消息和格式显示DIV.
  2. 当页面加载时,DIV必须保持隐藏状态.

knockout-validation

1
推荐指数
1
解决办法
7479
查看次数

使用可观察数组进行Knockoutjs映射和验证

我正在尝试创建一个KnockoutJS视图模型,它模拟客户订单和许多订单商品.我想加载初始数据,并验证数据.

到目前为止,我可以使用knockoutjs.mapping加载数据,验证使用映射添加的数据.

// data to load into viewmodel
var modeldata = {
  "OrderID":1,
  "ReturnString":null,
  "CustomerName":"First Customer",
  "OrderDate":"2013-09-16T19:41:40.1639709+01:00",
  "OrderItems": [
     {"ItemID":0,
      "ItemName":"Name_0",
      "ItemPrice":0.0,
      "_destroy":false
     },
     {"ItemID":1,
      "ItemName":"Name_1",
      "ItemPrice":10.0,
      "_destroy":false
     },
     {"ItemID":2,
      "ItemName":"Name_2",
      "ItemPrice":20.0,
      "_destroy":false
     }
   ]
};


// setup defaults for validation
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);


// define array model
var Item …
Run Code Online (Sandbox Code Playgroud)

knockout-mapping-plugin knockout.js knockout-validation

1
推荐指数
1
解决办法
3599
查看次数

ValidationMessage抛出observable是无法验证的

我有一个viewmodel,它有一个可观察的,并且我在其上应用了一些验证.

现在,当我使用自定义validationMessage绑定时,为了显示错误,我在ko验证库中收到以下错误:

<script type="text/html" id="TEXTBOX_Template">
    <input type="text" data-bind="value: question().s_answer" />
    <span class="validationMessage" 
          data-bind="validationMessage: question().s_answer"></span>
</script>
Run Code Online (Sandbox Code Playgroud)

KO validationMessage错误

我正在使用ko和ko-validation的最新版本.

我的设置如下:

ko.validation.init({ decorateInputElement: false, 
                     messageTemplate: 'error_Template' });
ko.validation.makeBindingHandlerValidatable("selectedOptions");
Run Code Online (Sandbox Code Playgroud)

错误模板(但在此示例中不需要,因为我想使用validationMessage):

<script type="text/html" id="error_Template">
    <!-- ko if: (field.isModified() && !field.isValid()) -->
    <span class="validationMessage" data-bind="text: field.error"></span>
    <!-- /ko -->
</script>
Run Code Online (Sandbox Code Playgroud)

如果这与observable一起工作,那么它应该与observableArray一起工作,因为我有一个使用ko foreach的单选按钮列表,当有验证时,错误会显示在每个输入单选按钮之后.

任何建议都会有帮助!

谢谢

knockout.js knockout-validation

1
推荐指数
1
解决办法
1617
查看次数