Javascript 当所有字段都已填充时启用按钮
我正在使用knockout.js进行数据绑定。实际上有一个表单,其中一些字段接受姓名、号码、电子邮件等。假设如果其中任何一个字段没有填写,并且按下“保存”按钮,则该按钮将进入禁用状态。到目前为止,其工作正常 现在,如果我填写空白字段,那么我想再次启用该按钮,但我不知道该怎么做。有人能帮我怎么做吗 下面是js代码Javascript 当所有字段都已填充时启用按钮,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我正在使用knockout.js进行数据绑定。实际上有一个表单,其中一些字段接受姓名、号码、电子邮件等。假设如果其中任何一个字段没有填写,并且按下“保存”按钮,则该按钮将进入禁用状态。到目前为止,其工作正常 现在,如果我填写空白字段,那么我想再次启用该按钮,但我不知道该怎么做。有人能帮我怎么做吗 下面是js代码 self.newPatient = ko.asyncCommand({ execute: function (complete) { var isValid =
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>
姓名:
地址:
我对上面的js和html也有类似的解释。类似这样的东西:
var formCompleted = false;
$('input[type="submit"]').attr('disabled','disabled');
$(":text, :file, :checkbox, select, textarea").change(function() {
formCompleted = validateForm();
if(formCompleted){
$('input[type="submit"]').removeAttr('disabled');
}
});
function validateForm() {
var isValid = true;
$('.form-field').each(function() {
if ( $(this).val() === '' )
isValid = false;
});
return isValid;
}
首先禁用按钮,在每个表单元素更改上检查是否已填写,然后删除禁用的属性。我还没有对此进行测试,但它应该可以让您从正确的方向开始。1)添加一个处理程序,当任何输入发生更改时触发该处理程序2)在该处理程序中,检查所有字段是否有值3)启用提交按钮查看此链接:您使用了
表单字段
,您能告诉我这是指哪个字段吗?这是您应该添加到每个表单字段的类。这是获取每个表单元素的另一种方法。刚刚意识到我还没有链接到那个页面,所以我“偷”了那个函数:问题是我的项目中使用了knockout dirtyflag,这就发生了。如果我使用jquery代码,按钮被禁用了,但当我按下按钮时,控件将不会运行self.newPatient=ko.asyncCommand({…}
您不能从jquery代码中调用敲除功能吗?我没有使用敲除,所以我将把“有用”的注释留给其他人:-)