Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.04.2018, 13:37
Аспирант
Отправить личное сообщение для AnthonyFink Посмотреть профиль Найти все сообщения от AnthonyFink
 
Регистрация: 14.10.2017
Сообщений: 31

classList.remove() не удаляет класс
что делаю не так ?
newNote();
function saveToDo(){
	// take date of new note
	var date = new Date()
	// take note
	var getId = date.getTime();
	var getNote = document.getElementById('todobox').value;
	var futureDate = document.getElementById('future_date').value;
	var errorMessage = document.getElementById('error_message');
	// validation for empty textarea

	if (getNote === "") {
		errorMessage.innerText = 'You must write something in description';
		errorMessage.classList.remove("error_text");
        return false;
        }else if(futureDate === ""){
        errorMessage.innerText = 'You must write date';
        errorMessage.classList.remove("error_text");
        return false;
        }
Ответить с цитированием
  #2 (permalink)  
Старый 14.04.2018, 13:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

AnthonyFink,
где минимальный код, с этой проблемой?
Ответить с цитированием
  #3 (permalink)  
Старый 14.04.2018, 13:51
Аспирант
Отправить личное сообщение для AnthonyFink Посмотреть профиль Найти все сообщения от AnthonyFink
 
Регистрация: 14.10.2017
Сообщений: 31

https://yadi.sk/d/ED0sR-Av3UQWbi
Ответить с цитированием
  #4 (permalink)  
Старый 14.04.2018, 13:52
Аспирант
Отправить личное сообщение для AnthonyFink Посмотреть профиль Найти все сообщения от AnthonyFink
 
Регистрация: 14.10.2017
Сообщений: 31

Сообщение от AnthonyFink Посмотреть сообщение
https://yadi.sk/d/ED0sR-Av3UQWbi
19 и 14 строки кода
Ответить с цитированием
  #5 (permalink)  
Старый 14.04.2018, 14:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от AnthonyFink
19 и 14 строки кода
работает всё, а вот парсинг localStorage не учитывает отсутстие todolist
вы сами запретили это делать своими return false; в строках 15 и 19 пост 1
поэтому до if (localStorage.getItem('todolist') == null) дело не доходит.

и в функции newNote возникает ошибка
можно исправить так
function newNote(){
var newNoteList = JSON.parse(localStorage.getItem('todolist'))||[];
но это не отменяет проблему с логикой в функции saveToDo()
Ответить с цитированием
  #6 (permalink)  
Старый 14.04.2018, 14:38
Аспирант
Отправить личное сообщение для AnthonyFink Посмотреть профиль Найти все сообщения от AnthonyFink
 
Регистрация: 14.10.2017
Сообщений: 31

ок но проббемму мне это не решает
Ответить с цитированием
  #7 (permalink)  
Старый 14.04.2018, 14:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

AnthonyFink,
пробуйте, и пишите в чём проблема?
newNote();
function saveToDo(){
	// take date of new note
	var date = new Date()
	// take note
	var getId = date.getTime();
	var getNote = document.getElementById('todobox').value;
	var futureDate = document.getElementById('future_date').value;
	var errorMessage = document.getElementById('error_message');
    errorMessage.classList.add("error_text");
	// validation for empty textarea

	if (getNote === "") {
		errorMessage.innerText = 'You must write something in description';
		errorMessage.classList.remove("error_text");
		document.getElementById('todobox').focus();
        return false;
        }else if(futureDate === ""){
        errorMessage.classList.add("error_text");
        errorMessage.innerText = 'You must write date';
        errorMessage.classList.remove("error_text");
        document.getElementById('future_date').focus();
        return false;
        }

   function validateDate(date) {
	            var str = date.trim().split("/");
    if (str.length == 3) {
        str = new Date(str[2], str[1] - 1, str[0], 0, 0, 0);
        if (str == 'Invalid Date') return false;
        str = [ ("0" + str.getDate()).substr(-2), ("0" + (str.getMonth() + 1)).substr(-2),str.getFullYear()].join("/");
        return str === date.trim()
    }
    return false

		 }
		 if (!validateDate(futureDate)) {
		 	errorMessage.innerText = 'You must write correct date'
	         errorMessage.classList.remove("error_text");
	         return false;
		 }
	var toDo = {id: getId, toDo: getNote, date: futureDate}
if (localStorage.getItem('todolist') == null){
	var to_do_list = [];
	to_do_list.push(toDo);
	localStorage.setItem('todolist', JSON.stringify(to_do_list));
}
else{
var to_do_list = JSON.parse(localStorage.getItem('todolist'));
	to_do_list.push(toDo);
	localStorage.setItem('todolist', JSON.stringify(to_do_list));
	}
 document.getElementById('todolist').reset();
 newNote();
}
// save note
function newNote(){
var newNoteList = JSON.parse(localStorage.getItem('todolist'))||[];
noteboard.innerHTML = '';
for(var i = 0; i <newNoteList.length; i++){
	var id = newNoteList[i].id;
	var toDoText = newNoteList[i].toDo;
	var myDate = new Date(id).toLocaleString();
	noteboard.innerHTML += '<div class="col-md-2 delete">' + '<span class="remove" onclick="deleteToDo(\''+id+'\')">'+ '<i class="far fa-trash-alt"></i>'+'</span>' +'<div id="text">'+ toDoText +'</div>'+ '<span class="date">'+ myDate +'</span>'+'</div>';
}
}

// delete notes
function deleteToDo(id){
var delete_to_do = JSON.parse(localStorage.getItem('todolist'));
for (var i = 0; i < delete_to_do.length; i++) {
	if (delete_to_do[i].id == id){
		delete_to_do.splice(i,1);
	}
}localStorage.setItem('todolist', JSON.stringify(delete_to_do));
		newNote();

}

Последний раз редактировалось рони, 14.04.2018 в 18:15.
Ответить с цитированием
  #8 (permalink)  
Старый 14.04.2018, 14:57
Аспирант
Отправить личное сообщение для AnthonyFink Посмотреть профиль Найти все сообщения от AnthonyFink
 
Регистрация: 14.10.2017
Сообщений: 31

Сообщение от рони Посмотреть сообщение
AnthonyFink,
пробуйте, и пишите в чём проблема?
//    function validateDate() {
	 //  			var reg = /^([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})$/;
	 //  			if (futureDate.match(reg)) {
	 //    		return true;
	 //  			}
	 //  		return false;
		// }
		// if (futureDate != validateDate()) {
		// 	errorMessage.innerText = 'You must write correct date'
	 //        errorMessage.classList.remove("error_text");
	 //        return false;
		// }
вот тут где у меня ошибка в проверке ?
Ответить с цитированием
  #9 (permalink)  
Старый 14.04.2018, 15:26
Аспирант
Отправить личное сообщение для AnthonyFink Посмотреть профиль Найти все сообщения от AnthonyFink
 
Регистрация: 14.10.2017
Сообщений: 31

Сообщение от рони Посмотреть сообщение
AnthonyFink,
смотрите пост №7 снова
большое спасибо. если я ввожу дату 99/99/9999 она впринципи проходит на ура как в regex я ограничеваю дэйс до 31 и месяцы до 12 ?
Ответить с цитированием
  #10 (permalink)  
Старый 14.04.2018, 15:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

AnthonyFink,
Валидация даты
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскаите как менять класс у елемента в зависимость от класса другово елемента NirVanea Общие вопросы Javascript 4 10.09.2015 13:51
Добавить / удалить класс кликом fabrique Общие вопросы Javascript 4 03.09.2014 04:43
Изменить класс родительского элемента STyLe Общие вопросы Javascript 1 29.05.2014 20:21
Как удалить класс у соседних элементов housewm Events/DOM/Window 4 11.03.2014 13:29
Jquery немогу установить класс! shureg Общие вопросы Javascript 4 26.10.2010 14:37