Бесконечная цветовая анимация фона в jQuery, как? - PullRequest
3 голосов
/ 22 февраля 2009

Я работаю над веб-формой, где я хочу (после отправки формы) выделить те поля ввода, которые были введены неправильно.

Эффект подсветки, который я хочу создать, представляет собой бесконечно циклическую анимацию между background-color: #fcc; и #fff; в неправильных полях ввода, используя jQuery. Когда одно из этих полей получает фокус, я хочу остановить анимацию этого поля.

Я совершенно не в духе в jQuery и JS, поэтому, если кто-нибудь сможет указать мне правильное направление, я буду искренне благодарен.

Ответы [ 4 ]

11 голосов
/ 22 февраля 2009

Проверьте эти два плагина jQuery:

Пульс : http://james.padolsey.com/javascript/simple-pulse-plugin-for-jquery/

Обращаем внимание : http://enhance.qd -creative.co.uk / demo / seekAttention / (ссылка теперь неактивна)

Я думаю, что Pulse - это то, что вы просили, но Seek Attention может быть полезна и в некоторых случаях.

Вот очень элементарный семпл, который я создал с помощью импульсного штекера.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js" type="text/javascript"></script>
<script src="http://enhance.qd-creative.co.uk/demos/pulse/pulse.jquery.js" type="text/javascript"></script>

<script type="text/javascript">
    function doSomething() {
        if ($('.BadTextBox').val() == "") {
            $('.BadTextBox').pulse({ backgroundColors: ['#fcc', '#fff'] });
        }
        else {
            $('.BadTextBox').css({'background-color': '#fff'}).stop();
        }

    }
</script>

<input type="text" class="BadTextBox" onblur="doSomething();" />

Когда пользователь уходит от текстового поля, оно начинает пульсировать, если оно пустое. Если они возвращаются и заполняют его, он перестает пульсировать.

1 голос
/ 30 марта 2009

Я сделал что-то похожее

Сначала создайте переменную функции javascript

var PulsePut = function (){

    if ($(this).val() == "") {
        $(this).pulse({ backgroundColors: ['#ffffee', '#fff'] });
    }
    else {
        $(this).css({'background-color': '#fff'}).stop();
    } }

Затем добавьте класс к входам

<input type="text" class="PulsePut" />

Наконец, для инициализации функции

$(document).ready(function(){

$('.PulsePut').blur(PulsePut); }

Это сделает любой ваш вход с классом .PulsePut pulse, если он пуст.

0 голосов
/ 29 октября 2011

Я бы перехватил событие onblur и запустил функцию для проверки ввода:

function matchShippingEmail() {
$('#shippingEmail').css('border',validColor);
if ($('#shippingEmail').val() == '') {
    $('#shippingEmailLabel').html('email');
    return 0;
}
if ($('#shippingEmail').val().match(RegExp('^([a-zA-Z0-9._%%-]+@+[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})'))) {
    $('#shippingEmailLabel').html('email');
    return 1;
} else {
    $('#shippingEmail').css('border',invalidColor);
    $('#shippingEmailLabel').html(email error');
    return 0;
}

}

При отправке формы я сделал это:

$(document).ready(function() {
$('.confirmOrder').click(function(event){
    if (!matchCardOwnerName())        {$('#cardOwnerName').css('border',invalidColor);        $('#cardOwnerName').focus();        return false;}
    if (!matchCardNumber())            {$('#cardNumber').css('border',invalidColor);            $('#cardNumber').focus();            return false;}
    if (!matchCVV2Code())             {$('#CVV2Code').css('border',invalidColor);                $('#CVV2Code').focus();                return false;}
    if (!matchCardOwnerId())        {$('#cardOwnerId').css('border',invalidColor);            $('#cardOwnerId').focus();            return false;}
    if (!matchShippingFullName())    {$('#shippingFullName').css('border',invalidColor);        $('#shippingFullName').focus();        return false;}
    if (!matchShippingAddress())    {$('#shippingAddress').css('border',invalidColor);        $('#shippingAddress').focus();        return false;}
    if (!matchShippingCity())        {$('#shippingCity').css('border',invalidColor);            $('#shippingCity').focus();            return false;}
    if (!matchShippingZipCode())    {$('#shippingZipCode').css('border',invalidColor);        $('#shippingZipCode').focus();        return false;}
    if (!matchShippingEmail())         {$('#shippingEmail').css('border',invalidColor);        $('#shippingEmail').focus();        return false;}
    if (!matchShippingPhoneNumber()){$('#shippingPhoneNumber').css('border',invalidColor);    $('#shippingPhoneNumber').focus();    return false;}
    if (!$('#agreeToTermsAndConditions').attr('checked')) {
        $('#agreeToTermsAndConditionsDiv').css('color','#FF0000');
        $('#agreeToTermsAndConditionsDiv').css('font-weight','bold');
        $('#agreeToTermsAndConditionsDiv').css('font','150%% ariel');
        return false;
    }
    $('html').css('cursor','wait');
    $('.confirmOrder').css('cursor','wait');
    $('#confirmOrderButton').attr('src','images/confirmOrderDisabled.jpg');
    $('#paymentForm').submit();
    //document.paymentForm.submit();
    $('form').get(0).setAttribute('action', '#'); //this works

    return true;
});

});

0 голосов
/ 22 февраля 2009

вот как бы я это сделал (общие шаги):

  1. цикл ввода, добавить класс "неправильный" в эти поля
  2. во время зацикливания, переключать bg "неправильных" классов, спать сколько угодно
  3. по щелчку ввода, удалить его "неправильный" класс.

это может не сработать, если в цикле while ничего не выполняется. исправления в комментариях.

...