【发布时间】:2014-04-16 10:18:51
【问题描述】:
我正在使用 knockout.js 进行数据绑定。实际上有一个表单,其中一些字段接受名称、数字、电子邮件等。假设如果任何一个字段未填写并且按下保存按钮,则该按钮转到禁用状态。直到现在它工作正常。
现在,如果我填写空白字段,那么我想再次启用该按钮,但我不知道该怎么做。任何人都可以帮我怎么做吗?
以下是js代码
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);
}
});
$('.alert-patient-success').show();
self.patients.removeAll();
self.getPatients();
/* $.when(self.patients.push(self.patient()),self.patient(new Patient()),self.dirtyFlag1().reset(),$('#patientTabs a:last').tab('show'))
.always(complete);*/
}
},
canExecute: function (isExecuting) {
return !isExecuting && isDirty() && isValid();
}
});
这是html代码
<script id="patientMetadataTemplate" type="text/html">
<form id="addPatientForm" data-validate="parsley">
<div class="control-group">
<label class="control-label" for="inputIcon">Name :</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: name" data-required="true" data-trigger="change" name="name">
</div>
</div>
</div>
<div class="control-group">
<label class="control-label" for="inputIcon">Address :</label>
<div class="controls">
<div class="input-prepend">
<span class="add-on"><i class="icon-hand-right"></i></span>
<input class="span8" name="address" type="text" data-bind="value: address" data-required="true" data-trigger="change">
</div>
</div>
</div>
我也有一个fiddle 用于上述 js 和 html。
【问题讨论】:
-
1) 添加一个在任何输入更改时触发的处理程序 2) 在该处理程序中,检查所有字段是否有值 3) 启用提交按钮,请参阅此链接:stackoverflow.com/questions/2469999/…
标签: javascript jquery knockout.js