Были ошибки в JS, написанном в предыдущем посте. Те, что нашел, исправил. Также исправил яваскрипт для компоненты, срабатывающей по фокусу. Код самой компоненты появится через пару дней))
Вот исправленный JS:
var searchValue = “” ;
var onloadFunctions = new Array() ;
var onAfterLoad = new Array() ;
var FindHandler = new Object() ;
var searchElements = new Array() ;
var searchStrings = new Array() ;
FindHandler.testClass = function(tagClass, className) {
var classN = new RegExp(“(^|\\s)” + className + “(\\s|$)”);
return classN.test(tagClass) ;
}
FindHandler.getParentByClass = function(className, tag) {
while (tag.parentNode) {
if (tag.className && this.testClass(tag.className, className)) {
return tag ;
} else {
tag = tag.parentNode ;
}
}
return null ;
}
FindHandler.getElementsByClassName = function(className, tag) {
var tag = tag || document ;
var returnElements = new Array() ;
for (var i = 0 ; i < tag.childNodes.length; i ++) {
if (tag.childNodes[i].className && this.testClass(tag.childNodes[i].className, className)) {
returnElements.push(tag.childNodes[i]) ;
}
}
for (var i = 0 ; i < tag.childNodes.length; i ++) {
var ret = this.getElementsByClassName(className, tag.childNodes[i]) ;
if (ret) {
for (var j = 0 ; j < ret.length; j ++) {
returnElements.push(ret[j]) ;
}
}
}
return returnElements.length > 0 ? returnElements : null ;
}
var KeyCode = new Object() ;
KeyCode.VK_ENTER = 13 ;
var f1 = function() {
var form = document.forms[0] ;
if (form) {
form.onkeypress = function(e) {
var key;
if (window.event)
key = window.event.keyCode; //IE
else
key = e.which; //firefox
if (key == KeyCode.VK_ENTER) {
var target ;
if (window.event) {
target = window.event.srcElement ;
} else {
target = e.target ;
}
var parent = FindHandler.getParentByClass(“useonenter-container”, target) ;
if (parent) {
var controls = FindHandler.getElementsByClassName(“useonenter-control”, parent) ;
if (controls && controls[0]) {
if (controls[0].tagName == “INPUT” || controls[0].tagName == “BUTTON”) {
controls[0].click() ;
} else {
controls[0].onclick() ;
}
}
}
return false ;
}
return true ;
}
}
}
function focusSearch() {
var target ;
if (window.event) {
target = window.event.srcElement ;
} else {
target = this ;
}
var index = searchElements.indexOf(target) ;
if (target.value == searchStrings[index]) {
target.value = “” ;
}
}
function blurSearch() {
var target ;
if (window.event) {
target = window.event.srcElement ;
} else {
target = this ;
}
var index = searchElements.indexOf(target) ;
if (target.value == “”) {
target.value = searchStrings[index] ;
}
}
var f2 = function() {
var allElements = FindHandler.getElementsByClassName(‘search-value-container’, null) ;
var el = new Array() ;
if (allElements) {
for (var i = 0; i < allElements.length; i ++) {
el[i] = allElements[i] ;
if (el[i]) {
el[i].onfocus = focusSearch ;
el[i].onblur = blurSearch ;
}
}
}
}
var setFocusEvents = function() {
if (searchElements && searchStrings) {
if (searchElements.length == searchStrings.length) {
for (var i = 0; i < searchElements.length; i ++) {
// alert(searchElements[i]) ;
searchElements[i].onfocus = focusSearch ;
searchElements[i].onblur = blurSearch ;
searchElements[i].onfocus ;
searchElements[i].onblur ;
if (searchElements[i].value == null || searchElements[i].value == “”) {
searchElements[i].value = searchStrings[i] ;
}
}
}
}
}
var changeBeforeSubmit = function() {
var form = document.forms[0] ;
if (form) {
form.onsubmit = function() {
for (var i = 0; i < searchElements.length; i ++) {
if (searchElements[i].value == searchStrings[i]) {
searchElements[i].value = “” ;
}
}
}
}
}
onloadFunctions.push(f1) ;
onloadFunctions.push(f2) ;
onloadFunctions.push(changeBeforeSubmit) ;
onAfterLoad.push(setFocusEvents) ;
window.onload = function() {
for (var i = 0 ; i < onloadFunctions.length; i ++) {
onloadFunctions[i]() ;
}
for (var i = 0 ; i < onAfterLoad.length; i ++) {
onAfterLoad[i]() ;
}
}