Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   В ИЕ 10 не работает скрипт (https://javascript.ru/forum/css-html-internet-explorer/41460-v-ie-10-ne-rabotaet-skript.html)

alexmixaylov 15.09.2013 10:37

В ИЕ 10 не работает скрипт
 
Такая проблема возникла
во всех браузерах нормально (даже ИЕ8, 9 не было возможности проверить) работает скрипт валидации
А ИЕ 10 отличился!
При нажатии на кнопку "Order", если не заполнены необходимые поля выскакивает алерт с предупреждением, если все ок снимается атрибут disabled с кнопки и работает обработчик тогда, вернее так происходит во всех браузерах, кроме ИЕ 10.

сайт dev.aroma-swiss.com/en/
ссылка на файл валидатора /modules/mod_formaz/form.js

Код валидатора
$(function() {
	var callback = function() {
		var carClass = $('select[name="b-type"]').val();
		var from = $('select[name="from"]').val();
		var to = $('select[name="to"]').val();
		var pay = $('select[name="pay"]').val();

		if(from == 'select' || to == 'select')
		{
			$('#price').html('-');
			return;
		}

		if(from == 'airport') {
			from = $('select[name="air"]').val();
			if(from == 'select')
			{
				$('#price').html('-');
				return;
			}
		}
		if(to == 'airport-to') {
			to = $('select[name="air-to"]').val();
			if(to == 'select')
			{
				$('#price').html('-');
				return;
			}
		}

		$.ajax({
			type: "POST",
			url: '/en/book',
			data: {
				'class': carClass,
				from: from,
				to: to,
				pay: pay
			},
			success: function(data) {
				var price = data.match(/price=([0-9]+)/i);
				price = price ? price[1] : '-';
				if(!price) price = '-';
				if(price != '-') price = price + ' RUB';
				$('#price').html(price);
				$('input[name="price"]').val(price.replace(' RUB', ''));
			},
			dataType: 'html'
		});
	};
	$('select').change(callback);

	// datepicker code
	$("#datepicker").datepicker({
		minDate: "now",
		maxDate: "+3m",
		dateFormat: 'dd-mm-yy',
		onSelect: function ()
		{
			//this.focus();
			$(this).removeClass('error');
		}
	});

	// front-side form validation
	// check each element separately
	$('input[name="from-data"]').on('blur keyup', function(){
		if($.trim($(this).val()) != '')
			$(this).removeClass('error');
		else
			$(this).addClass('error');
	});
	$('select[name="from"]').on('change blur',function(){
		if(!$(this).val() || $.trim($(this).val()) == 'select')
			$(this).addClass('error');
		else
			$(this).removeClass('error');
	});
	// from - address
	$('input[name="from-adress"]').on('blur keyup', function(){
		if($.trim($(this).val()) != '')
			$(this).removeClass('error');
		else
			$(this).addClass('error');
	});
	$('input[name="hhf"]').on('blur keyup', function(){
		if(is_numeric($(this).val()))
			$(this).removeClass('error');
		else
			$(this).addClass('error');
	});
	$('input[name="mmf"]').on('blur keyup', function(){
		if(is_numeric($(this).val()))
			$(this).removeClass('error');
		else
			$(this).addClass('error');
	});

	// from - airport
	$('select[name="air"]').on('change blur',function(){
		if(!!$(this).val() || $.trim($(this).val()) != 'select')
			$(this).removeClass('error');
		else
			$(this).addClass('error');
	});
	$('input[name="hha"]').on('blur keyup', function(){
		if(is_numeric($(this).val()))
			$(this).removeClass('error');
		else
			$(this).addClass('error');
	});
	$('input[name="mma"]').on('blur keyup', function(){
		if(is_numeric($(this).val()))
			$(this).removeClass('error');
		else
			$(this).addClass('error');
	});
	$('input[name="flightnumber"]').on('blur keyup', function(){
		if($.trim($(this).val()) != '')
			$(this).removeClass('error');
		else
			$(this).addClass('error');
	});

	// from - train station
	$('select[name="train"]').on('change blur',function(){
		if(!!$(this).val() || $.trim($(this).val()) != 'select')
			$(this).removeClass('error');
		else
			$(this).addClass('error');
	});
	$('input[name="hht"]').on('blur keyup', function(){
		if(is_numeric($(this).val()))
			$(this).removeClass('error');
		else
			$(this).addClass('error');
	});
	$('input[name="mmt"]').on('blur keyup', function(){
		if(is_numeric($(this).val()))
			$(this).removeClass('error');
		else
			$(this).addClass('error');
	});
	$('input[name="trainnumber"]').on('blur keyup', function(){
		if($.trim($(this).val()) != '')
			$(this).removeClass('error');
		else
			$(this).addClass('error');
	});
	$('input[name="wagonnumber"]').on('blur keyup', function(){
		if($.trim($(this).val()) != '')
			$(this).removeClass('error');
		else
			$(this).addClass('error');
	});

	$('select[name="to"]').on('change blur',function(){
		if(!$(this).val() || $.trim($(this).val()) == 'select')
			$(this).addClass('error');
		else
			$(this).removeClass('error');
	});
	// to - address
	$('input[name="adress-to"]').on('blur keyup', function(){
		if($.trim($(this).val()) != '')
			$(this).removeClass('error');
		else
			$(this).addClass('error');
	});

	// to - airport
	$('select[name="air-to"]').on('change blur',function(){
		if(!!$(this).val() && $.trim($(this).val()) != 'select')
			$(this).removeClass('error');
		else
			$(this).addClass('error');
	});

	// to - train station
	$('select[name="train-to"]').on('change blur',function(){
		if(!!$(this).val() || $.trim($(this).val()) != 'select')
			$(this).removeClass('error');
		else
			$(this).addClass('error');
	});

	$('input[name="b-card-1"]').on('blur keyup', function(){
		if($.trim($(this).val()) != '')
			$(this).removeClass('error');
		else
			$(this).addClass('error');
	});
	$('input[name="b-card-2"]').on('blur keyup', function(){
		if($.trim($(this).val()) != '')
			$(this).removeClass('error');
		else
			$(this).addClass('error');
	});
	$('input[name="b-card-3"]').on('blur keyup', function(){
		if($.trim($(this).val()) != '')
			$(this).removeClass('error');
		else
			$(this).addClass('error');
	});
	$('input[name="b-card-4"]').on('blur keyup', function(){
		if($.trim($(this).val()) != '')
			$(this).removeClass('error');
		else
			$(this).addClass('error');
	});
	$('select[name="card-month"]').on('blur keyup', function(){
		if(is_numeric($(this).val()))
			$(this).removeClass('error');
		else
			$(this).addClass('error');
	});
	$('select[name="card-year"]').on('blur keyup', function(){
		if(is_numeric($(this).val()))
			$(this).removeClass('error');
		else
			$(this).addClass('error');
	});
	$('input[name="b-holder"]').on('blur keyup', function(){
		if($.trim($(this).val()) != '')
			$(this).removeClass('error');
		else
			$(this).addClass('error');
	});

	$('input[name="nameplate"]').on('blur keyup', function(){
		if($.trim($(this).val()) != '')
			$(this).removeClass('error');
		else
			$(this).addClass('error');
	});
	//$('input[name="phone-client"]').on('blur keyup', function(){
	//	if($.trim($(this).val()) != '' && (/^\+[0-9]+/).test($.trim($(this).val())))
	//		$(this).removeClass('error');
	//	else
	//		$(this).addClass('error');
	// });
	$('input[name="mail-client"]').on('blur keyup', function(){
		if($.trim($(this).val()) != ''
				&& (/^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/).test($.trim($(this).val())))
			$(this).removeClass('error');
		else
			$(this).addClass('error');
	});
	
	$('#form-submit > div').click(function(){
		var ok = true;
		if($('input[name="send"]').attr('disabled') == 'disabled')
		{
			$('form[id*="book"] > div > div').each(function(k,v){

				if($(v).css('display') != 'none')
				{
					$(v).find('input[type="text"]').each(function(k2,v2){
						var visible = true;
						$.each($(v2).parents(), function() {
							if($(this).css('display') == 'none')
								visible = false;
						});
						if($.trim($(v2).val()) == '' && visible)
						{
							ok = false;
							$(v2).addClass('error');
						}
						else
						{
							$(v2).removeClass('error');
						}
					});
					$(v).find('select').each(function(k3,v3){
						if($.trim($(v3).val()) == '' || $.trim($(v3).val()) == 'select')
						{
							ok = false;
							$(v3).addClass('error');
						}
						else
						{
							$(v3).removeClass('error');
						}
					});
				}
			});
			if($('select[name="pay"]').val() == 'card' && $('input[type="checkbox"]:checked').length == 0)
			{
				ok = false;
			}
		}
		if(ok === false)
		{
			var attr = $('input[name="send"]').attr('disabled');
			if(typeof attr == 'undefined' || attr == false)
				$('input[name="send"]').attr('disabled', 'disabled');

			$(this).show();

			alert('Пожалуйста, заполните все необходимые поля.');
		}
		else
		{
			$('input[name="send"]').removeAttr('disabled');
			$(this).hide();
			$('form[id*="book"]').submit();
		}
	});

});
function is_numeric( mixed_var ) {
	return ( mixed_var == '' ) ? false : !isNaN( mixed_var );
}

danik.js 15.09.2013 10:53

Цитата:

Сообщение от alexmixaylov
При нажатии на кнопку "Order", если не заполнены необходимые поля выскакивает алерт с предупреждением, если все ок снимается атрибут disabled с кнопки и работает обработчик тогда, вернее так происходит во всех браузерах, кроме ИЕ 10.

Пока кнопка disabled, по ней невозможно кликнуть (события click не произойдет, как ты не старайся). Там для обхода проблемы накладывается прозрачный div, который и ловит клики. Косяк в том что IE не ловит клики на абсолютно прозрачных элементах. Уже не помню как это исправить лучшим образом, но как вариант можно задать едва видный фон:
background: rgba(0,0,0,0.01)

alexmixaylov 15.09.2013 15:41

danik.js - Ты не даром носишь звание: "Профессор" :thanks:
Спасибо огромное, а то прямо беда была
Все прекрасно работает теперь
ИЕ --- проникаюсь к нему все большей любовью!!!


Часовой пояс GMT +3, время: 22:52.