Javascript 带输入掩码的jQuery验证

Javascript 带输入掩码的jQuery验证,javascript,jquery,twitter-bootstrap,validation,masking,Javascript,Jquery,Twitter Bootstrap,Validation,Masking,有这样一个问题:jQuery验证没有将具有指定掩码(作为占位符)的表单输入验证为空 我使用: (在本例中使用jQuery本机验证) 一些奇怪的行为: 属性为required的输入(由jQuery)验证为非空,因此有效,但另一方面,输入不被视为“非空”,也不检查其他验证规则(由validator.js验证) 当我将某些内容写入输入字段,然后将其删除时,我会收到required错误消息 有人能给我一些提示吗 编辑: 相关代码: HTML/PHP: <form enctype="mult

有这样一个问题:jQuery验证没有将具有指定掩码(作为占位符)的表单输入验证为空

我使用:

  • (在本例中使用jQuery本机验证)
一些奇怪的行为:

  • 属性为
    required
    的输入(由jQuery)验证为非空,因此有效,但另一方面,输入不被视为“非空”,也不检查其他验证规则(由validator.js验证)
  • 当我将某些内容写入输入字段,然后将其删除时,我会收到
    required
    错误消息
  • 有人能给我一些提示吗

    编辑: 相关代码:

    HTML/PHP:

    <form enctype="multipart/form-data" method="post" id="feedback">
        <div class="kontakt-form-row form-group">
            <div class="kontakt-form">
                <label for="phone" class="element">
                    phone<span class="required">*</span>
                </label>
            </div>
            <div class="kontakt-form">
                <div class="element">
                    <input id="phone" name="phone" ' . (isset($user['phone']) ? 'value="' . $user['phone'] . '"' : '') . ' type="text" maxlength="20" class="form-control" required="required" data-remote="/validator.php">
                </div>
            </div>
            <div class="help-block with-errors"></div>
        </div>
    </form>
    

    这不完全是解决方案,但是

    更改某些等效项的输入掩码可解决此问题

    不过,这还远远不够完美:(

    说明:

    其他屏蔽库没有提到这两种奇怪的行为,因此可以验证字段

    我用过:

    通过激活ClearComplete,我成功地使用了Robinherbot的Inputmask(3.3.11)和jQuery验证。请参阅:

    清除模糊上的不完整输入

    $(文档).ready(函数(){
    $(“#日期”).inputmask(“99/99/9999”,{“ClearComplete”:true});
    });
    
    个人而言,如果可能,我更喜欢通过HTML数据属性设置:

    数据输入掩码ClearComplete=“true”
    
    缺点是:当焦点丢失时,部分输入会被删除,但我可以接受。所以也许你也

    编辑:如果需要将掩码验证添加到jQuery验证过程的其余部分,可以通过执行以下操作模拟jQuery验证错误:

    //获取当前附加的jQuery验证验证器
    var validator=$form.data('validator');
    //从面具上获取信息
    var$maskedInputList
    =$(':输入[data inputmask]:非([data inputmask=”“]);
    var$UncompleteMaskedinPutlist
    =$maskedInputList.filter(函数(){
    return!$(this).inputmask(“isComplete”);
    });
    如果($UncompleteMaskedinPutList.length>0)
    {
    var错误={};
    $UncompleteMaskedInputList.each(函数(){
    var$input=$(此);
    var inputName=$input.prop('name');
    错误[inputName]
    =本地化(‘不完全maskedinput_消息’);
    });
    //将每个掩码冲突错误显示为jQuery验证错误
    验证程序错误(错误);
    //如果出现任何此类错误,请取消提交
    isAllInputmaskValid=false;
    }
    //jQuery验证
    var isAllInputValid=validator.form();
    //如果两个验证过程中的任何一个失败,则取消提交
    如果(!IsAllInput有效||
    !isAllInputmaskValid){
    返回;
    }
    //提交表格
    $form.submit();
    
    将这两个LIB组合在一起时,我遇到了同样的问题

    实际上,这里也有一张类似的票:

    以下是机器人机器人提供的解决方案:

    $(“#inputPhone”).inputmask(“999.999.9999”,{showMaskOnFocus:false,showMaskOnHover:false});

    当掩码焦点/悬停在那里时,验证程序假定它不是空的。
    只需关闭遮罩的焦点和悬停即可解决问题。

    我通过以下方法解决了此问题:

    phone_number: {
                presence: {message: '^ Prosimy o podanie numeru telefonu'},
                format: {
                    pattern: '(\\(?(\\+|00)?48\\)?)?[ -]?\\d{3}[ -]?\\d{3}[ -]?\\d{3}',
                    message: function (value, attribute, validatorOptions, attributes, globalOptions) {
                        return validate.format("^ Nieprawidłowa wartość w polu Telefon");
                    }
                },
                length: {
                minimum: 15,
                    message: '^ Prosimy o podanie numeru telefonu'
                },
            },
    

    我很高兴你发布了关于这个问题的帖子,因为我也有同样的问题。使用jquery.maskedinput解决了你的问题吗?我也使用jquery.maskedinput,但我仍然在标记为必需的字段上收到错误消息。这对我来说很有效。获取错误消息就是这里的目标。我认为我们可能有不同版本的库,因为不管条目是对是错,掩码总是会抛出一个错误。不过,我计算错了max属性,没有考虑掩码添加的破折号。它可以工作
    phone_number: {
                presence: {message: '^ Prosimy o podanie numeru telefonu'},
                format: {
                    pattern: '(\\(?(\\+|00)?48\\)?)?[ -]?\\d{3}[ -]?\\d{3}[ -]?\\d{3}',
                    message: function (value, attribute, validatorOptions, attributes, globalOptions) {
                        return validate.format("^ Nieprawidłowa wartość w polu Telefon");
                    }
                },
                length: {
                minimum: 15,
                    message: '^ Prosimy o podanie numeru telefonu'
                },
            },