autoKeyboardLang : function(str) { var s = [ "й","ц","у","к","е","н","г","ш","щ","з","х","ъ", "ф","ы","в","а","п","р","о","л","д","ж","э", "я","ч","с","м","и","т","ь","б","ю" ]; var r = [ "q","w","e","r","t","y","u","i","o","p","\\[","\\]", "a","s","d","f","g","h","j","k","l",";","'", "z","x","c","v","b","n","m",",","\\." ]; for (var i = 0; i < r.length; i++) { var reg = new RegExp(r[i], 'mig'); str = str.replace(reg, function (a) { return a == a.toLowerCase() ? s[i] : s[i].toUpperCase(); }); } return str; } ... if( ! /^[а-яё ]*$/i.test(s) ){ $(input).val(autoKeyboardLang(s)); } ....
js
Склонение сеществительного от числа [js]
var declOfNum = function(number, titles) { var cases = [2, 0, 1, 1, 1, 2]; return titles[ (number % 100 > 4 && number % 100 < 20) ? 2 : cases[(number % 10 < 5) ? number % 10 : 5] ]; } //declOfNum(days, ['день', 'дня', 'дней']); //declOfNum(hours, ['час', 'часа', 'часов']); //declOfNum(minutes, ['минута', 'минуты', 'минут']); //declOfNum(seconds, ['секунда', 'секунды', 'секунд']);
В input только числа
var ar_str = $('#INPUT').val().split(""); var r = /\d{1}/; var nv = ''; for(var i = 0; i < ar_str.length; i++) { if(r.test(ar_str[i])) nv += ar_str[i]; } $('#INPUT').val(nv);
AJAX навигация по меткам
Итак задача, нужно сохранять состояние страницы после ajax запроса. Для этого приспособили метки у ссылок, URL будет вот такого вида http://site.ru/#/key:val/key1:val1/keyN:valN/
В js далеко не гуру, но все работает и нативно.
var Navigation = function() { this.isHash = function(){return (window.location.href.indexOf('#') !== -1 && window.location.hash.length > 1);}; /** * Возвращает все параметры из url в виде объекта */ this.getQueryParams = function(){ if(this.isHash()) { var _ar = window.location.hash.replace('#', '').split('/'); var _ob = {}; for(var i=0; i < _ar.length; i++){ if(_ar[i] !== "") _ob[i] = _ar[i]; } var returnObject = {}; for(var j in _ob){ if (_ob.hasOwnProperty(j)) { var _ar_params = _ob[j].split(':'); returnObject[_ar_params[0]] = _ar_params[1]; } } return returnObject; } return false; }; /** * Устанавливает строку параметров, если есть сотрет что было */ this.setHash = function(objectParsms){ var ar = [], j = 0; for(var i in objectParsms){ j++; ar[j] = i + ':' + objectParsms[i]; } var hashString = ar.join('/'); if(hashString.length > 0) window.location.hash = '#' + hashString + '/'; }; this._isEmptyObject = function(Obj) { var i = 0; for(var o in Obj){ i++; } return i; }; this._isKeyObject = function(obj, key){ for(var o in obj) { if(o === key) return true; } return false; }; /** * Добавляет параметр в url, если параметр уже есть то заменит значение на новое */ this.addHashParam = function(objectParams){ if(this.isHash()) { var params = this.getQueryParams(); for(var o in objectParams){ if(this._isKeyObject(params, o)){ params[o] = objectParams[o]; } } var arRes = [], k = 0; for(var or in params){ k++;arRes[k] = or + ':' + params[or]; } var str_hash = arRes.join('/'); var ar = [], j = 0; for(var i in objectParams){ if(!this._isKeyObject(params, i)){ j++; ar[j] = i + ':' + objectParams[i]; } } if(ar.length > 0){ str_hash += ar.join('/') + '/'; } else{ str_hash += '/'; } window.location.hash = str_hash; } else { this.setHash(objectParams); } }; /** * Удаляет параметр из url можно указывать несколько, принимает массив ключей */ this.delHashParams = function(arParams){ if(this.isHash()) { var params = this.getQueryParams(); for(var a = 0; a <= arParams.length; a++){ delete params[arParams[a]]; } if(this._isEmptyObject(params) > 0) this.setHash(params); else window.location.hash = ''; }; }; };
Делать такую навигацию весьма трудоемко, но позволяет немного шире использовать ajax.
Предзагрузка изображений js [snippets]
2 рабочие функции для пред загрузки картинок, нативная и jQuery.
function preload(images) { if (typeof document.body == "undefined") return; try { var div = document.createElement("div"); var s = div.style; s.position = "absolute"; s.top = s.left = 0; s.visibility = "hidden"; document.body.appendChild(div); div.innerHTML = ""; var lastImg = div.lastChild; lastImg.onload = function() { document.body.removeChild(document.body.lastChild); }; } catch(e) { // Error. Do nothing. } } }); jQuery.preloadImages = function () { var images = (typeof arguments[0] == 'object') ? arguments[0] : arguments; for (var i = 0; i < images.length; i++) { jQuery("").attr("src", images[i]); } }
Найдено на просторах.
http://clip2net.com/clip/m11386/1304961837-clip-11kb.png