Javascript 基于错误组的动态按钮启用淘汰js

Javascript 基于错误组的动态按钮启用淘汰js,javascript,knockout.js,knockout-validation,Javascript,Knockout.js,Knockout Validation,我有一个文本框和一个按钮。当文本框为空时,我需要禁用按钮,当我开始在文本框中键入时,我希望启用按钮 当前,在文本框中输入一些文本后,当我将焦点从文本框中移出时,该按钮即被启用。但我希望这是启用的时刻是文本框不是空的。我使用的是knockout.js,我的文本框和按钮都是可见的。 我没有超过1个文本字段,如果所有字段都不是空的,我希望启用。如果任何字段是空的,没有失去焦点,我想禁用该按钮 这是我的密码: var email = ko.observable({ emailField: ko.obse

我有一个文本框和一个按钮。当文本框为空时,我需要禁用按钮,当我开始在文本框中键入时,我希望启用按钮

当前,在文本框中输入一些文本后,当我将焦点从文本框中移出时,该按钮即被启用。但我希望这是启用的时刻是文本框不是空的。我使用的是knockout.js,我的文本框和按钮都是可见的。 我没有超过1个文本字段,如果所有字段都不是空的,我希望启用。如果任何字段是空的,没有失去焦点,我想禁用该按钮 这是我的密码:

var email = ko.observable({ emailField: ko.observable().extend({ email:
true, required: { param: true, message: FILL_FIELD } })), enableButton
 = ko.observable(), errorGroup = ko.validation.group([emailField]);

您有两个选择:

  • 用于KO 3.2.0及更高版本;或
  • 对于较低版本,使用

两者都要确保视图模型在按键后立即更新,并与其他绑定(如
enable

)级联。使问题复杂化的是,验证正在进行,并且希望验证等待焦点退出,因此,在键入时不断更新值并不是一个解决方案

相反,您可以单独查看
输入
事件,以跟踪哪些必填字段为空
watchForEmpty
是一个工厂,它接受一个可观察事件并返回一个淘汰事件处理程序。它设置清空列表的初始状态,事件处理程序维护它。当清空列表没有条目时,该按钮启用

vm={
清空:ko.observearray(),
thing:ko.observable('prefilled'),
事物2:ko.可观察(),
值班室:功能(可观察){
var initVal=可观察();
if(initVal==''| initVal===未定义){
虚拟机清空推送(可观察);
}
返回函数(上下文、事件){
var el=事件目标;
如果(el.value==''){
虚拟机清空推送(可观察);
}否则{
vm.清空.移除(可观察);
}
};
}
};
ko.应用绑定(vm)

如果我使用了其中任何一种,在我开始输入时,错误消息就会一直显示出来。例如:如果我的字段至少包含5个字符,则在我输入1个字符时,它会不断弹出错误消息。