实时验证互斥字段

时间:2014-10-27 23:58:24

标签: javascript validation livevalidation

我正在尝试使用LiveValidation验证两个字段,但我似乎无法在任何地方找到任何内容。

我正在尝试创建所需的EmailMobile字段中的一个或另一个,以便当一个填充另一个时不需要,但两个可能被输入。

这是我的代码:

<script type="text/javascript">
var Email = new LiveValidation("Email", {validMessage: "", onlyOnBlur: true});
Email.add(Validate.Presence, {failureMessage:"This field is required"});
Email.add(Validate.Format, {pattern: /^[ ]*([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})[ ]*$/i,    failureMessage: "A valid email address is required"});

var mobile = new LiveValidation("mobile", {validMessage: "", onlyOnBlur:    true});mobile.add(Validate.Presence, {failureMessage:"This field is required"});

var discussion = new LiveValidation("discussion", {validMessage: "", onlyOnBlur: true});discussion.add(Validate.Presence, {failureMessage:"This field is required"});
</script>

1 个答案:

答案 0 :(得分:0)

我认为你可以做到,但你必须要破解它。使用LiveValidation库,LiveValidation类下没有返回常量或布尔值的函数,表明字段已经过验证。但是,您可以检查验证消息是否已添加到DOM。例如,假设我有代码, - &gt;

var f1 = new LiveValidation('f1');
f1.add( Validate.Presence );

现在,我想确保f1已经过验证。为此,我将得到字段'f1'的父元素,检查具有类'LV_valid'的元素,然后从那里开始。我的代码看起来像是,&gt;

function isValidated (field) {
    var element = document.getElementById (field);
    for (var i in element.parentElement.getElementsByClassName ("LV_valid")) {
        ...
    }
}

问题在于无法识别您检索到的LV字段是否与您的字段对应。您可能必须编写自己的验证代码或制作库的修改版本。这就是我现在可以提供的所有输入,希望它是有效的。