Javascript 带输入掩码的jQuery验证
有这样一个问题: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本机验证)
required
的输入(由jQuery)验证为非空,因此有效,但另一方面,输入不被视为“非空”,也不检查其他验证规则(由validator.js验证)required
错误消息<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'
},
},