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 только числа
[source language=’js’]
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);
[/source]
AJAX навигация по меткам
Итак задача, нужно сохранять состояние страницы после ajax запроса. Для этого приспособили метки у ссылок, URL будет вот такого вида http://site.ru/#/key:val/key1:val1/keyN:valN/
В js далеко не гуру, но все работает и нативно.
[source language=’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 = »;
};
};
};
[/source]
Делать такую навигацию весьма трудоемко, но позволяет немного шире использовать 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