Архив

Публикации с меткой ‘javascript’
26 апреля 2017 Нет комментариев
$('select option:not(:selected)').attr('disabled',true);
Categories: Javascript Tags:
23 марта 2017 Нет комментариев

Округлить чисто до кратного 3 в большую сторону, т.е. 9=9 10=12 11=12 12=12 13=15

width=Math.ceil(width/3)*3;
Categories: Javascript Tags:
20 февраля 2017 Нет комментариев

Последний рабочий вариант:

function validateVin(vin){
	var re=new RegExp("^[A-HJ-NPR-Z\\d]{13}\\d{4}$","i");
	return vin.match(re);
}

Остальные промежуточные относительно рабочие:

function validateVin(vin){
	var re=new RegExp("^[A-HJ-NPR-Z\\d]{8}[\\dX][A-HJ-NPR-Z\\d]{2}\\d{6}$");
	return vin.match(re);
}

Обновлено:
1. Не учитываем регистр:

function validateVin(vin){
	var re=new RegExp("^[A-HJ-NPR-Z\\d]{8}[\\dX][A-HJ-NPR-Z\\d]{2}\\d{6}$","i");
	return vin.match(re);
}

2. Некоторые корректные VIN-номера все равно не проходят проверку, поэтому делаем дополнительную проверку на то что в строке:

  • только латиница и цифры;
  • нет символов I, O и Q;
  • последние 4 символа — цифры.
$('#form').on('submit',function(){
	var error='';
	var vin=$("input[name=carVIN]").val();
	if(!validateVin(vin)){
		var Reg=new RegExp("^[a-zA-Z0-9]+$");
		if(Reg.test(vin)&&vin.toLowerCase().indexOf("i")==-1&&vin.toLowerCase().indexOf("o")==-1&&vin.toLowerCase().indexOf("q")==-1&&vin.length>4&&$.isNumeric(vin.slice(-4))){
			var res=confirm('Неправильное заполнения VIN-номера повлияет на время обработки заявки');
			if(res==false) return false;
		}
		else{
			error+='VIN указан неверно\r\n';
		}
	}
	if(error!=''){
		alert(error);
		return false;
	}
});

Второе можно попробовать сделать одним регулярным выражением. Или исправить что-то в первом…

Обновлено 2:
В примерах выше, 9 символ обязательно должен быть либо X либо цифра, но на практике встречаются vin с другими символами. Поэтому можно упростить:

function validateVin(vin){
	var re=new RegExp("^[A-HJ-NPR-Z\\d]{13}\\d{4}$","i");
	return vin.match(re);
}

Еще вариант (на практике не подошел):

valid_vin=function(vin){
	no_ioq='[a-hj-npr-z0-9]';
	matcher=new RegExp("^"+no_ioq+"{8}[0-9xX]"+no_ioq+"{8}$",'i');
	if(vin.match(matcher)==null)
		return false;
	return check_digit_check(vin);
};
check_digit_check=function(vin){
	cleaned_vin=vin.toUpperCase();
	letter_map={A:1,B:2,C:3,D:4,E:5,F:6,G:7,H:8,J:1,K:2,L:3,M:4,N:5,P:7,R:9,S:2,T:3,U:4,V:5,W:6,X:7,Y:8,Z:9,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,0:0};
	weights=[8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2];
	products=0;
	for(var i=0;i<cleaned_vin.length;i++) {
		products+=letter_map[cleaned_vin[i]]*weights[i];
	}
	check_digit_should_be=products%11;
	if(check_digit_should_be==10) check_digit_should_be='X';
	return check_digit_should_be==cleaned_vin[8];
}

Источники:
http://stackoverflow.com/questions/26407015/javascript-jquery-vin-validator
https://en.wikipedia.org/wiki/Vehicle_identification_number
https://github.com/bradg/vin-js

Categories: Javascript Tags:
27 января 2017 Нет комментариев

Получить value всех отмеченных checkbox в блоке, перечисленные через запятую.

$('.catalog a.submit').live('click',function(){
	var options=[];
	$.each($(".catalog input[type=checkbox]:checked"),function(){
		options.push($(this).val());
	});
	alert(options);
	return false;
});
Categories: Javascript Tags: ,
17 января 2017 Нет комментариев
function resizeInput(){
	$(this).css('width',($(this).val().length*7.5)+'px');
}
$(document).ready(function(){
	$('.inputs input').each(resizeInput);
});
Categories: Javascript Tags: ,
17 января 2017 Нет комментариев
$.fn.toggleText=function(t1,t2){
	if(this.text()==t1)this.text(t2);
	else this.text(t1);
	return this;
};

Пример использования:

$(document).ready(function(){
	$(".shch").click(function(){
		$(this).toggleText('+','-');
		$(this).closest('li').children('ul').slideToggle();
		return false;
	});
});
Categories: Javascript Tags: ,
11 января 2017 Нет комментариев

HTML:

<script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script>
<div id="map"></div>

Javascript:

ymaps.ready(init);
function init(){
	var myMap=new ymaps.Map("map",{
		center:[59.974504,30.550266],
		zoom:11,
		controls:['zoomControl']
	}),
	Placemark1=new ymaps.Placemark([60.002148,30.272623],{
		balloonContent:'Балун 1',
		hintContent:'Стандартный значок метки 1',
	},{
		preset:'islands#redDotIcon'
	}),
	Placemark2=new ymaps.Placemark([59.935935,30.363452],{
		balloonContent:'Балун 2',
		hintContent:'Стандартный значок метки 2',
	},{
		preset:'islands#redDotIcon'
	});
	myMap.geoObjects.add(Placemark1).add(Placemark2);
	myMap.behaviors.disable('scrollZoom');
}

CSS:

#map{
	height:390px;
}
[class*="ymaps-2"][class*="-ground-pane"]{
	filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale");
	-webkit-filter:grayscale(100%);
}

На основе: http://jsfiddle.net/9aj8j/76/

Categories: Web Tags: ,