2014-11-14 2 views
0

Я хочу проверить одно поле, используя несколько правилКаков наилучший способ сделать несколько проверок с различными сообщениями об ошибках в одном поле с помощью bacon.js?

Простой пример. Это HTML форма:

<div class="form-group"> 
    <label for="fullName">Name</label> 
    <input type="text" class="form-control" id="fullName" placeholder="Enter name"> 
</div> 
<div class="form-group"> 
    <div id="fullNameErrors"></div> 
</div> 

И это моя функция проверки:

function checkForm() { 
    $("#fullNameErrors").hide(); 
    var fullName = $("#fullName").val(); 
    if (fullName.length < 4) { 
     $("#fullNameErrors").show().html("Name too short"); 
    } 
    var parts = fullName.split(" "); 
    if (parts.length!=2) { 
     $("#fullNameErrors").show().html("First name and last name expected"); 
    } 
    if (parts[0].length<3) { 
     $("#fullNameErrors").show().html("First name to short"); 
    } 
} 

Когда поле изменяется я называю checkForm().

Как эта же идея может быть реализована в режиме FRP с использованием Bacon.js?

ответ

1

Вы можете отобразить ошибки проверки на объекты Bacon.Error так:

var $errors = $("#fullNameErrors"); 
var $fullName = $("#fullName"); 

var nameChanges = $fullName.asEventStream("input").flatMapLatest(function() { 
    var fullName = $fullName.val(); 
    if (fullName.length < 4) { 
     return new Bacon.Error("Name too short"); 
    } 
    // other validations here 
    return fullName; 
}); 

nameChanges.onValue(function(fullName) { 
    console.log("Name ok: " + fullName); 
    $errors.empty(); 
}); 

nameChanges.onError(function(error) { 
    $errors.text(error); 
}); 

Попробуйте с JSFiddle. Подробнее об обработке ошибок Bacon.js https://github.com/baconjs/bacon.js#errors

 Смежные вопросы

  • Нет связанных вопросов^_^