2009-09-25 4 views
0

Я написал некоторый код, который позволит мне иметь какой-то серый цвет в форме ввода, и когда пользователь сосредоточится на нем, текст исчезнет и станет ungreyed вне, если это имеет смысл ...onfocus & onblur не работает в IE

function editableAlt (elem, colour1, colour2) { 
    var elem = document.getElementById(elem); 
    elem.onfocus = function() { 
     if(this.value == this.defaultValue) { 
      this.value = ""; // remove the default text, so the user can enter their own 
      this.style.color = "#" + colour1; // change the text colour 
     } 
    }; 
    elem.onblur = function() { 
     if(this.value == '') { 
      this.value = this.defaultValue; // user left it blank? revert back to the default text 
      this.style.color = "#" + colour2; // and change the colour back too 
     } 
    } 
} 

Это работает на большинстве страниц, но по одному для какой-то причины OnFocus и ONBLUR не работает вообще - например, если я изменить его на OnClick это не вызывает никаких проблем.

Есть ли что-нибудь еще, что я могу попробовать? :(Я использую JQuery, но удаление, что, кажется, не влияют вообще.

Приветствие

+0

Работает в моей IE6: http://jsbin.com/aduni Вы делаете . что-то еще не так в другом месте в коде –

+0

Спасибо, я даже пытался это с помощью Jquery без толку: \t \t если (. $ ("# Absence_Hours") длина> 0) { \t \t \t $ это = $ (это); // кэшировать переменную \t \t \t $ this.focus (функция() { \t \t \t \t предупреждение ('тест'); \t \t \t}); \t \t} Изменение фокуса() на щелчок() работает нормально, хотя ... – Nick

ответ

3

Я обнаружил, что IE чрезвычайно неумолимая, когда дело доходит до яваскрипта ошибок. Я побежал код через JSLint и получил следующие ошибки:


Ошибка: проблемы в строке 2 символа 14:. 'эль' уже определен

var elem = document.getElementById(elem); 

Пробло em в строке 10 символ 23: Используйте '===' для сравнения с ''.

if(this.value == '') { 

Проблема в строке 14 символ 6: отсутствует точка с запятой.

} 

Implied глобальный: документ 2


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

+0

О, хорошее место - спасибо красноречивым! Помните, если я спрошу, что вы использовали для его отладки? Я не получил ошибку в IE или Firebug. Thanks – Nick

+1

http: // jslint.com - ваш лучший друг (рядом с Firebug) при отладке javascript, особенно когда вещи только ломаются в IE. Это спасло мой бекон бесчисленное количество раз. – inkedmn

+0

Отличный сайт, спасибо! – Nick

0

Какой идиот, извините, ребята! Я попытался удалить все другие файлы Javascript, но пропустил самый важный из них: он был обернут в PHP и IE, если заявления, да!

Suckerfish sfFocus, применялся в результате чего сломаться: http://htmldog.com/articles/suckerfish/shoal/

К сожалению :(& большое спасибо за предложения