用baconjs进行表单验证

时间:2015-05-19 21:08:22

标签: jquery functional-programming frp bacon.js

我最近开始玩bacon.js,不知怎的,我真的很喜欢用功能性反应式编程风格组合EventStream。

我目前正在实施表单验证。 目前的代码:

var name = textInputAsEventStream("#name"); //transforms input to evenStream 
var nameValid = name.map(specificValidationFunction);   //here I validate a name that enters a stream
nameValid.onValue(function(valid){//do something with jquery at the web interface, i.e. feedback of the validation}

问题是,当您有20个表单需要验证时,变量会爆炸。 (极端的例子)有没有人对如何以优雅的方式解决这个问题有任何想法?

我不确定下面的代码是否真的可行:

var valid = nameValid.and(surnameValid).and(adressValid).and(codeValid).and(cityValid).and(telValid).and(emailValid); 
//here I compose al 'validition'-streams into one

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

你基本上有正确的方法。将公共部分重构为辅助函数将有助于使用样板。

要整理整个表单是否有效,可以使用数组方法:

 <?php
    echo $this->Form->create('Question', array('type' => 'file'));
    echo $this->Form->input('files.', array('type' => 'file', 'multiple'));
    echo $this->Form->end('Upload');
    ?>