【发布时间】:2014-04-18 21:02:15
【问题描述】:
我有这个淘汰码。
self.newPatient = ko.asyncCommand({
execute: function(complete) {
var isValid=$('#addPatientForm').parsley( 'validate' );
if(isValid){
var patientJson=ko.toJSON(self.patient());
formdata.append("json",patientJson);
//self.enableButton(false);
var imagepath= $.ajax({
url: projectUrl+"newPatient",
type: "POST",
data: formdata,
processData: false,
contentType: false,
success: function (res) {
formdata = new FormData();
imagepath=res;
var length=self.patients().length;
var patient=self.patient();
// self.enableButton(true);
}
});
}
},
canExecute: function(isExecuting) {
return !isExecuting && isDirty() && isValid();
}
});
这是我的 html 输入框
<div class="control-group">
<label class="control-label" for="inputIcon">Username :</label>
<div class="controls">
<div class="input-prepend">
<span class="add-on"><i class="icon-hand-right"></i></span>
<input class="span8" type="text" data-bind="value: username" name="username" data-required="true" data-trigger="change" data-remote="${pageContext.request.contextPath}/isUserNameExists" data-remote-method="GET">
</div>
</div>
</div>
<div class="control-group">
<label class="control-label" for="inputIcon">Password :</label>
<div class="controls">
<div class="input-prepend">
<span class="add-on"><i class="icon-hand-right"></i></span>
<input class="span8" type="password" data-bind="value: password" name="password" data-required="true" data-trigger="change">
</div>
</div>
</div>
这是我的按钮
<button class="btn btn-primary"
data-bind="command: $root.newPatient, activity: $root.newPatient.isExecuting">
<i class="icon-ok icon-white"></i> Save
</button>
当我按下保存按钮然后执行:function(complete){.....} 被调用并在这个函数内部
var isValid=$('#addPatientForm').parsley( 'validate' );
被调用来检查表单的有效性,如果表单无效,则 isValid 为假,因此不调用 ajax。
我想打电话
var isValid=$('#addPatientForm').parsley( 'validate' );
if(isValid){.....}
当任何输入字段发生更改时。那么任何人都可以建议我怎么做吗?
【问题讨论】:
-
首先,如果您问我,您可能应该验证视图模型而不是视图。创建一个计算属性,该属性读取并验证其评估器主体中的所有属性。更新属性时总是会调用计算属性。
-
@robert.westerlund 感谢您的建议,但我的视图模型包含很多。所以我认为验证所有视图模型不是最佳做法。
-
只验证你想要验证的属性。要进行验证,您可以查看Knockout Validation plugin at the Knockout Contrib github page。
-
@robert.westerlund 再次感谢,但问题是我们已经在使用 parsley.js 进行验证,所以他们不允许我使用其他插件。
-
如果您还有其他问题,请将其作为另一个问题写在 stackoverflow 上。如果您觉得它与此问题有关,您可以在此处的 cmets 中添加指向该问题的链接。
标签: javascript jquery knockout.js