Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.09.2013, 10:37
Аспирант
Отправить личное сообщение для alexmixaylov Посмотреть профиль Найти все сообщения от alexmixaylov
 
Регистрация: 14.09.2013
Сообщений: 70

В ИЕ 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 );
}
Ответить с цитированием
  #2 (permalink)  
Старый 15.09.2013, 10:53
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от alexmixaylov
При нажатии на кнопку "Order", если не заполнены необходимые поля выскакивает алерт с предупреждением, если все ок снимается атрибут disabled с кнопки и работает обработчик тогда, вернее так происходит во всех браузерах, кроме ИЕ 10.
Пока кнопка disabled, по ней невозможно кликнуть (события click не произойдет, как ты не старайся). Там для обхода проблемы накладывается прозрачный div, который и ловит клики. Косяк в том что IE не ловит клики на абсолютно прозрачных элементах. Уже не помню как это исправить лучшим образом, но как вариант можно задать едва видный фон:
background: rgba(0,0,0,0.01)
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 15.09.2013, 15:41
Аспирант
Отправить личное сообщение для alexmixaylov Посмотреть профиль Найти все сообщения от alexmixaylov
 
Регистрация: 14.09.2013
Сообщений: 70

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


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В Firefox не работает скрипт в отличии от Opera, Chrome, IE yanagas Javascript под браузер 2 06.08.2013 01:32
не работает скрипт как ссылка Abraham jQuery 31 14.06.2011 03:04
Не работает скрипт :( VladimirV Javascript под браузер 5 21.12.2010 14:26
скрипт работает только в IE, а в остальных браузерах нет. melodicman Firefox/Mozilla 0 23.06.2010 15:18
скрипт не работает в IE( SunYang Общие вопросы Javascript 3 02.02.2010 22:45