2013-04-25 119 views
2

我试图使用Happy.js验证表单客户端。基于条件的表单元素(Happy.js)

基本验证工作正常,但我有一个稍微复杂的部分,我需要验证它是一个更复杂一点。本质上,有一个是/否的无线电盒,如果是的话,显示几个输入标签。只有单选按钮为yes时才需要这些标签,否则不需要。

有没有人有任何建议如何做到这一点?我正在考虑将它们设置为非必需,然后创建一个快乐函数,如果输入为空且单选按钮设置为是,则该函数将返回false。

事情是这样的:

"#input":{ 
    required: false, 
    message: "required", 
    test: happy.needed(parameter) 
} 

感谢。

回答

3

正如文档所述,您可以将'sometimes'传递给required,这将使Happy始终运行测试功能。

对于测试函数,我们只返回jQuery/Zepto is的值。

"#input":{ 
    required: "sometimes", 
    message: "Custom message", 
    test: function(input){ 
     return $(input).val() !== '' && $('#radioButton').is(':checked'); 
    } 
} 

,他们给,如果你不知道发生了什么happy.email可能会造成混淆的例子。 JavaScript中的函数是第一类的,这意味着你可以像变量一样传递它们。

因此,如果我们写:

var isRadioButtonChecked = function(input) { 
    return $(input).val() !== '' && $('#radioButton').is(':checked'); 
} 

然后在我们的验证规则,我们可以这样写:

"#input":{ 
    required: "sometimes", 
    message: "Custom message", 
    test: isRadioButtonChecked 
} 

这将是一个有点更简洁。

+0

谢谢您的详细解释先生。 – 2015-04-21 07:47:34