Изменение цвета текста с помощью Jquery

470
24 ноября 2016, 10:01

Здравствуйте, пытаюсь усовершенствовать обработку формы с текстом, с помощью jquery.Скрипт выводит успешно сохраненные в БД данные,пришедшие из формы, на экран без перезагрузки страницы,если те прошли проверку на количество отправленных символов.Проект делается на php фреймворке Laravel 5.3.

Что конкретно пытаюсь сделать:при выводе на экран данных,текст должен выводиться зеленым цветом,появляться должен плавно,а по прошествии 2-3 секунд меняться на черный цвет.

С выводом текста в зеленом цвете все хорошо,но вот с анимацией не получается разобраться.Подскажите пожалуйста,как можно это организовать.Заранее спасибо.

Такой код на данный момент:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        .center {
            text-align: center;
        } 
    </style>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script>
        $(document).ready(function () {
            $("#sendForm").submit(function (ev) {
                ev.preventDefault();
                $('#messageShow').hide();
                var title = $("#title").val();
                var fail="";
                if (title.length < 3) fail="Название категории должно состоять из не менее 3 символов";
                if (fail!=""){
                    $('#messageShow').css({'color' : 'red'});
                    $('#messageShow').html(fail);
                    $('#messageShow').show();
                    return false;
                }
                $.ajax({
                    url: '{{action('CategoriesController@store')}}',
                    type:'POST',
                    data:$('#sendForm').serialize(),
                    cache:false,
                    success: function () {
                        var neww = "new!";
                        $("#title").val("");             
                        $("#new").css({'color':'red'});
                        $("#new").html(neww);
                        $("#categoryBlock").append("<h4>"+title+"</h4>").css({'color' : 'limegreen'}).show();
                    }
                })
            })
        })
    </script>

</head>
<body>
<div class="center">
<form method="POST" enctype="multipart/form-data" id="sendForm" action="{{action('CategoriesController@store')}}">
    {{ csrf_field() }}
    <input type="text" name="title" id="title" placeholder="Добавить категорию">
    <input type="submit" class="btn-primary" value="Добавить" > <div id="messageShow"></div>
</form>
    @if(Session::has('message'))
        {{Session::get('message')}}
    @endif
</div>
<br>
<div class="center">
<h3>Список категорий:</h3><br>
@foreach($categories as $category)
    <h4>{{$category->title}}</h4>
@endforeach
    <div id="new"></div>
    <div id="categoryBlock"></div>
</div>
</body>
</html>
@endsection
Answer 1

$('button').click(() => { 
  $('#s').text("Все сохранилось!!! ))").css({ 
    'opacity': 0, 
    'color': 'green' 
  }); 
  $('#s').animate({ 
    'opacity': 1 
  }, 1000, setBlack()); 
 
}) 
 
function setBlack() { 
  setTimeout(function() { 
    $('#s').css('color', 'black'); 
  }, 2000); 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<button>Click me</button> 
<br> 
<span id="s"></span>

Answer 2

Как вариант, можно добавить класс, который сделает ваш текст черным, и добавлять его с таймаутом после того, как данные были получены.

Для примера написал аналогичное действие по клику.

function changeColor() { 
  setTimeout( 
    function() { 
      $('.main').addClass('black'); 
    }, 
    2000 
  ) 
} 
 
$('.main').click(changeColor)
.main { 
  transition: all 2s; 
  color: green; 
} 
.black { 
  color: black 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<div class="main">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ab, maiores.</div>

READ ALSO
Определить focus на элементе в jQuery

Определить focus на элементе в jQuery

Надо что бы когда уводишь курсор с какого-то элемента и при этом отсутствует фокусированная форма, то изменяется цвет текста. Я так понимаю...

525
JQuery. Поворот изображения туда-обратно

JQuery. Поворот изображения туда-обратно

Доброго времени суток! Не могу сообразить, как реализовать поворот картинки на 45 и -45 градусов непрерывано, то есть, картинка все время наклоняется...

536
Jquery Validation не работает с Materialize

Jquery Validation не работает с Materialize

На странице где используется Materialize не работает Jquery Validation, после отключения materialize. min.

476