(关注Placeholder Hidden)的问题
我希望我的表单在加载时验证现有数据。我似乎无法实现这一点
这是展示问题的jsFiddle。加载表单时,我希望将无效的电子邮件标记为这样。如果单击“添加”按钮,则会对其进行标记,但不会在最初加载时进行标记。为什么呢?
但是,也会点击ADD(运行与加载时相同的方法)。为什么它第二次起作用,但最初加载时不起作用?
updateValidation : function () {
this.$el.find('[placeholder]').each(function (index, ctrl) {
var $ctrl = $(ctrl);
if( $ctrl.val() !== "" && (ctrl.checkValidity && !ctrl.checkValidity()) ) {
// alert('Do validity check!');
$ctrl.focus();
$ctrl.blur();
}
});
}
我在FF 17.0.5中看到了这一点。在IE9中问题更严重,有时在字段显示错误之前需要2或3次点击ADD。但是,由于mime类型不匹配,我得到了一些我喜欢的js文件的错误。
答案 0 :(得分:0)
这与以下事实有关:您正在尝试重用.user-error类,这是CSS4:用户错误的“垫片”,不应该从脚本触发。用户错误脚本在onload之后加载,或者在用户似乎与来自。
的无效内容交互时加载从我的角度来看,你不应该使用用户错误而是创建自己的类。您只需使用':invalid'选择器检查有效性:
$(this)[ $(this).is(':invalid') ? 'addClass' : 'removeClass']('invalid-value');
只需编写一个具有类似代码的函数,并将它们绑定到诸如更改,输入等事件,并在启动时调用它。
如果您仍想使用用户错误,可以执行以下操作,但我不建议:
$.webshims.polyfill('forms');
//force webshims to load form-validation module as soon as possible
$.webshims.loader.loadList(['form-validation']);
//wait until form-validation is loaded
$.webshims.ready('DOM form-validation', function(){
$('input:invalid')
.filter(function(){
return !!$(this).val();
})
.trigger('refreshvalidityui')
;
});