2015-02-13 5 views
-1

У меня проблема с кодом, который работает, когда я использую только условия годами, но когда я добавляю условия для типа, имени и места, функция не дает ожидаемого результата (смените кнопку status to disabled = false).Кнопка (disabled = false); работает в некоторых случаях, а не в других

Я использую слушатель событий документа для проверки действий пользователя:

document.addEventListener("blur", enableSaveButton()); 

У меня есть следующий код для проверки условий о том, когда для установки инвалида значения кнопки щелкни на ложь:

function enableSaveButton() { 
startyear = document.getElementById('start_year'); 
endyear = document.getElementById('end_year'); 
type = document.getElementById('type'); 
place = document.getElementById('place'); 
name = document.getElementById('name'); 
if (!(startyear.className === "form-group has-success")) { return; }; // works 
if (!(endyear.className === "form-group has-success")) { return; }; // works 
if (!(type.className === "form-group has-success")) { return; };// does not work 
if (!(place.className === "form-group has-success")) { return; };// does not work 
if (!(name.className === "form-group has-success")) { return; }; // does not work 
document.getElementById("savebutton").disabled = false; } // this code works 

стартyear и endyear обе те же функции, подтвержденогодность (год, id) (если поле onblur) для установка g формирует групповой статус либо «form-group has-success», либо «form-group has-error».

тип, имя и место использование другой функции, faultyChars (stringen, ID) для получения того же результата.

Оба работают по назначению (даже если код не может быть внедренный ...) =)

Если я использую только StartYear и EndYear в enableSaveButton() функция работает отлично. Но если я добавлю тип, место и имя ошибка входит, хотя она содержит практически тот же код. Есть идеи по этому поводу? Все и любая помощь приветствуются!

Вот функции я уже упоминал:

function validateYear(year, id){ 
console.log("Inne i validateYear"); 
var x = document.getElementById(id); 
if (year === "") { x.className="form-group has-error"; return false; } 
if (isNaN(year)) { x.className="form-group has-error"; return false; } 
if (year.length !== 4) { x.className="form-group has-error"; return false; } 
if ((year.substr(0,2) !== "19") && (year.substr(0,2) !== "20")) { x.className="form-group has-error"; return false; } 
else { 
    x.className="form-group has-success"; 
    enableSaveButton(year); 
    return true; } 

}

function enableSaveButton() { 
startyear = document.getElementById('start_year'); 
endyear = document.getElementById('end_year'); 
type = document.getElementById('type'); 
place = document.getElementById('place'); 
name = document.getElementById('name'); 
if (!(startyear.className === "form-group has-success")) { return; };works 
if (!(endyear.className === "form-group has-success")) { return; }; // works 
if (!(type.className === "form-group has-success")) { return; };// does not work 
if (!(place.className === "form-group has-success")) { return; };// does not work 
if (!(name.className === "form-group has-success")) { return; }; // does not work 
document.getElementById("savebutton").disabled = false; // this code works 

}

+0

Что не работает? Каковы ошибки? – Matheno

+0

Попробуйте изменить имена своей переменной. 'name' /' place'/'type' – NewToJS

+0

_" и функция 'crashes' "_ - поскольку вы уже сами устанавливаете« сбои »в кавычках, вы, похоже, знаете, что это не самое точное описание проблем ... поэтому, пожалуйста, отредактируйте свой вопрос и включите соответствующий, который действительно даст нам полезную информацию. – CBroe

ответ

0

Я нашел часть ответа. Проблема заключалась в том, что вам нужно вернуться к одному из полей года и оставить его. Затем, когда onblur вступает в игру, кнопка становится активной.

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

0

Не зная, что ошибка, которую вы видите, это, это только предположение, но: это вероятно, что в документе нет элемента с идентификатором type, таким образом getElementById() возвращает null, и пытается ссылаться e type.className вызывает ошибку. Убедитесь, что 1) вы использовали имя type, а не что-то еще, 2) вы вспомнили, что добавили к этому элементу атрибут id="type", и 3) никакой другой код не удаляет этот элемент из DOM до того, как будет запущен enableSaveButton().