Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当所有字段都已填充时启用按钮_Javascript_Jquery_Knockout.js - Fatal编程技术网

Javascript 当所有字段都已填充时启用按钮

Javascript 当所有字段都已填充时启用按钮,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我正在使用knockout.js进行数据绑定。实际上有一个表单,其中一些字段接受姓名、号码、电子邮件等。假设如果其中任何一个字段没有填写,并且按下“保存”按钮,则该按钮将进入禁用状态。到目前为止,其工作正常 现在,如果我填写空白字段,那么我想再次启用该按钮,但我不知道该怎么做。有人能帮我怎么做吗 下面是js代码 self.newPatient = ko.asyncCommand({ execute: function (complete) { var isValid =

我正在使用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> 

姓名:
地址:
我对上面的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代码中调用敲除功能吗?我没有使用敲除,所以我将把“有用”的注释留给其他人:-)