我有一个我在服务器上发布的表单,如果服务器响应任何错误,我想慢慢地闪烁表单的输入(提交和textareas)。
我试图做那样的事情:
JS:
$(':input','#myForm').not(':button, :submit, :reset, :hidden').fadeOut(550, function(){
$(':input','#myForm').not(':button, :submit, :reset, :hidden').toggleClass("blink-class").fadeIn(550);
});
CSS:
。blink-class { border: 1px solid #ee1b1b !important; }
但它只是从表单中删除输入而不是闪烁。 基本上我只想在输入周围闪烁红色边框,但是方式很好。
有没有办法做到这一点?
答案 0 :(得分:1)
你需要
$('button').click(function () {
var $els = $(':input', '#myForm').not(':button, :submit, :reset, :hidden');
$els.fadeOut(550).promise().done(function () {
$els.toggleClass("blink-class").fadeIn(550);
});
})
演示:Fiddle
为什么呢?
:hidden
选择器会使您的选择器忽略none
显示设置为fadeOut
的元素。此外,fadeOut
处理程序多次执行(对于选择器选择的每个输入元素,执行一次)
解决方案是将fadeOut(),然后fadeIn()元素缓存到promise()。done()处理程序中 - 这是因为我们需要显示所有输入当所有元素都淡出时,元素会立即出现
答案 1 :(得分:1)
试试这个:
var t = null;
function blink() {
var obj = $('input[type="text"]')
obj.addClass("blink-class");
t = setTimeout(function () {
obj.removeClass("blink-class");
t = setTimeout(function () {
blink();
}, 550);
}, 550);
}
<强> demo 强>
答案 2 :(得分:0)