 
			
				15.02.2015, 21:41
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.04.2012 
					
					
					
						Сообщений: 37
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				проверка input (пожалуйста, помогите)
			 
			
		
		
		
		Имеется скрипт, в котором проверяются input поля. Проверка осуществляется, главным образом, по клику на кнопку <input type="submit" value="Отправить"> 
в <form> 
Вот ссылка на сам скрипт:  http://ruseller.com/lessons.php?rub=32&id=246
В общем проблема в том, что у меня стоит слайдер, который прокручивает окна с полями. Там 4 слайда и мне нужно что бы поля не проверялись всюду. Потому что начинаются проблемы с разметкой.  
Есть 4 кнопки соответственно, которые прокручивают слайды.  
Так вот нужно следующее: Я нахожусь на первом слайде, на котором расположены поля input. Нужно что бы при нажатии на кнопку "Слайд 2" - функция выполняла проверку полей первого слайда, если все нормально то переходила на второй слайд. И так с каждым слайдом.  
Что мне нужно для этого, для этого требуется: Есть кнопка сабмита, которая по форме проверяет. Как я уже написал это выше. Так вот, нужна кнопка отдельная, которая будет проверять поля. Не сабмит. А другая. Отдельная. 
Что бы я мог выполнить функцию проверки не нажимая на сабмит. 
Надеюсь я Вас не запутал. Если что то будет непонятно - обьясню!
 
___ 
Потому что там в основном функция на javascript и я не понимаю как все это осуществить. По сути не сложно. 
Помогите пожалуйста  ::smile24.gif::  
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				15.02.2015, 22:14
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 А я плохой мальчик, взял и отключил JS, и того хуже, взял и отправил вам левую форму, тогда как? 
 
Все проверки на клиенте, это сервис не более, проверять необходимо на сервере, не зависимо от того была ли проверка на клиенте. 
 
Я не ради отговорить, нет, оно конечно круто, удобно для клиента, но ... Современные браузеры поддерживают required и pattern без каких либо спец. скриптов, а для браузеров-инвалидов можно поступить иначе. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				15.02.2015, 22:23
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.04.2012 
					
					
					
						Сообщений: 37
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от laimas
			 
		
	 | 
 
	
		А я плохой мальчик, взял и отключил JS, и того хуже, взял и отправил вам левую форму, тогда как? 
 
Все проверки на клиенте, это сервис не более, проверять необходимо на сервере, не зависимо от того была ли проверка на клиенте. 
 
Я не ради отговорить, нет, оно конечно круто, удобно для клиента, но ... Современные браузеры поддерживают required и pattern без каких либо спец. скриптов, а для браузеров-инвалидов можно поступить иначе.
	 | 
 
	
 
 Да вы правы но для моего сайта как раз и нужны подобные подсказки. Там нечем манипулировать, по сути на сайте просто производятся простые подсчеты.Это по сути модуль. Даже двиг не буду ставить. Если будут введены не те параметры - все равно выскочит ошибка. Сайт на php, и скажу большее: там даже нет mysql и бд 
_____________ 
Помогите сделать, заплачу даже немного. Мне не обойтись без этой функции((  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось alma95, 15.02.2015 в 22:37.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				15.02.2015, 22:32
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 А, то есть это данные не для хранения. 
По идее форма и не должна отправляться этим плагином, если уж написано без перезагрузки. Следовательно вы что-то не так делаете, а что не знаю. 
 
Но, что представляют ваши данные, которые надо проверять на каждом шаге? Может ну его к лешему этот плагин и все можно решить несколькими строками своего кода. То есть, почитал я о его методах, ну вряд ли они вам все нужны, сомневаюсь в этом, а цеплять по каждому пустяку плагин очередной, это не гут. 
 
Опишите задачу словами - есть какая-то панель с полями, в которых нужно проводить проверку по нажатию, на следующей панели иные поля с такими-то данными и т.д. 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось laimas, 15.02.2015 в 22:35.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				15.02.2015, 22:48
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.04.2012 
					
					
					
						Сообщений: 37
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Нужен просто код, который будет запрещать отправку пустых инпутов и возможность запрещать в поле, там где нужны цифры - буквы. А там где нужны буквы - цифры. 
___________________________________________ 
Вот и все, что надо по сути. Этот скрипт был довольно красиво реализован просто, на это и клюнул, как говорится. 
Хотел в этом скрипте проверку не переходя на следующей слайд, пока первый не проверяться - по той причине что происходил взрыв с разметкой (если скрипт проверял сразу все слайды) :-) 
Если есть какие то методы проверки лучше то я только за)) 
Вот, надеюсь ответил на все 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				15.02.2015, 23:21
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Так нужна отправка данных или нет? Вроде бы как из написанного выше не нужно, но запрещать отправку пустых инпутов, означает что надо? 
 
Если вам нужна проверка ради перехода, а данные серверу не нужны, то и формы как таковой не нужно, достаточно только полей ее. Но странно - для чего эта проверка JS, для того чтобы не рвало верстку при переходах? Если проблемы в верстаке, то почему не решать ее присущими ей инструментами, а JS? Что это означает, поясните. 
 
Проверить поле на пустоту и цифры/литеры, это пустячная задача, и плагин точно не нужен. Но только пояснять надо, может и этого не требуется. Или все таки нужна проверка. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				16.02.2015, 02:09
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.04.2012 
					
					
					
						Сообщений: 37
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Ну у меня есть страничка, на этой страничке - форм и в форме, разумеется, инпуты. Инпуты мне нужны для того, что бы человек ввел в них необходимые для расчетов параметры. После чего при нажатии сабмита, в форм срабатывает экшн, который переносит все значения, которые были сделаны в инпутах на новую страницу php через протокол $_POST там я по этим средствам принимаю введенные параметры и обрабатываю их в расчетах, которые в результате выходят. Вот и вся операция. Следовательно, если в поле ввести не то значение, что надо то конечные расчеты все покатятся коту под хвост. И по этому нужно сделать соответствующую проверку, которая не даст ввести, соответственно, туда где нужны цифры - буквы и наоборот. Там все по экшн и данные само собой никуда не сохраняются в бд. 
Нужна просто проверка, и все 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось alma95, 16.02.2015 в 02:12.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				16.02.2015, 05:11
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Сначала: 
>проблема в том, что у меня стоит слайдер, который прокручивает окна с полями. Там 4 слайда и мне нужно что бы поля не проверялись всюду.
Тут была проблема перезагрузки. Теперь:
 >при нажатии сабмита, в форм срабатывает экшн, который переносит все значения, которые были сделаны в инпутах на новую страницу
Теперь явно о новой странице.
 
Давайте так. Из всех пояснений, я могу только предполагать, что же все таки нужно. Пишу пример по предположениям, все в одном файле. Никаких перезагрузок, асинхронными запросами, где div - это какие-то ваши слайды, в которые я так понимаю должны помещаться новые формы на каждом шаге. Типа такого должно быть?
 
<?
//для РНР не ниже 5.4
//это имитация подключаемых форм каждого этапа, их элементов
$fld = [
    1 => '<input placeholder="Number" name="fld[]"><br><br><input placeholder="Number" name="fld[]">
          <input type="hidden" name="fld[]" value="1">',
         '<input placeholder="String" name="fld[]"><br><input placeholder="String" name="fld[]"><br>
          <input placeholder="Number" name="fld[]"><input type="hidden" name="fld[]" value="2">',
         '<input placeholder="String" name="fld[]"><br><br><input placeholder="Number" name="fld[]">
          <input type="hidden" name="fld[]" value="3">'
];
$chk = [
    ['flt'=>FILTER_VALIDATE_REGEXP, 'opt'=>['options'=>['regexp'=>'/^\d+$/']], 'err'=>1],
    ['flt'=>FILTER_VALIDATE_REGEXP, 'opt'=>['options'=>['regexp'=>'/^[a-z]+$/']], 'err'=>2]
];
$fields = [
    [$chk[0], $chk[0], $chk[1]],
    [$chk[0], $chk[0]],
    [$chk[1], $chk[1], $chk[0]],
    [$chk[1], $chk[0]]
];
if($_POST) {
    $val = array_map('trim', $_POST['fld']);
    $src = array_pop($val);
    if($e = checkForm($fields[$src], $val)) exit(json_encode(['err'=>$e]));
    exit(json_encode(['fld'=>$fld[$src+1]]));
}
function checkForm($fld, $val) {
    $err = null;
    foreach($fld as $k=>$v) {
        if(!$val[$k]) $err[$k] = getError(0);
        else if(!filter_var($val[$k], $v['flt'], $v['opt'])) $err[$k] = getError($v['err']);
        continue;
    }
    return $err;
}
function getError($e) {
    $err = ['Empty!', 'Only numbers!', 'Only letters!'];
    return $err[$e];
}
?>
<!DOCTYPE HTML> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<style>
</style> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<script> 
$(function() {
    $('form').submit(function() {
        var f = $(this);
        $.post(location, f.serializeArray(), function(d) {
            if(d.err) {
                $.each(d.err, function(i, v) {
                    document.forms[0].elements[i].value = v;
                })   
            } else {
                f.html(d.fld+'<br><button>Send</button>');
            }
        }, 'json');
        return false;
    });
});
</script>     
</head> 
<body>
<p>ttttttttttt</p>
<div style="width:200px;height:100px;padding:20px;background:#eee">
    <form>
        <input placeholder="Number" name="fld[]"><br><input placeholder="Number" name="fld[]">
        <br><input placeholder="String" name="fld[]"><br>
        <input type="hidden" name="fld[]" value="0">
        <button>Send</button>
    </form>
</div>
<p>ttttttttttt</p>
</body> 
</html>
 
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.02.2015, 09:18
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.04.2012 
					
					
					
						Сообщений: 37
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		laimas, Извините за отсутствие, была проблема с интернетом 
Скажите, а за что отвечают эти строки?
 
$fld = [
    1 => '<input placeholder="Number" name="fld[]"><br><br><input placeholder="Number" name="fld[]">
          ',
         '<input placeholder="String" name="fld[]"><br><input placeholder="String" name="fld[]"><br>
          <input placeholder="Number" name="fld[]"><input type="hidden" name="fld[]" value="2">',
         '<input placeholder="String" name="fld[]"><br><br><input placeholder="Number" name="fld[]">
          <input type="hidden" name="fld[]" value="3">'
];
И хотел проверить работу сценария но у меня выбило ошибку: Parse error: syntax error, unexpected '[' in C:\OpenServer\domains\test1.ru\test.php on line 4 
А 4 line в коде начинается как раз таки с кода: $fld = [
 
У Вас все нормально с его работой?  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось alma95, 17.02.2015 в 09:20.
				Причина: Допись
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.02.2015, 11:57
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		То есть вы и РНР не знаете? 
Я вверху написал - для РНР не ниже версии 5.4. В этой версии объявлять массив можно так же как и в JS  - квадратные скобки, без объявления типа. 
Если у вас РНР ниже этой версии, то нужно писать так:
 
$fld = array(
    1 => '<input placeholder="Number" name="fld[]"><br><br><input placeholder="Number" name="fld[]">
          ',
         '<input placeholder="String" name="fld[]"><br><input placeholder="String" name="fld[]"><br>
          <input placeholder="Number" name="fld[]"><input type="hidden" name="fld[]" value="2">',
         '<input placeholder="String" name="fld[]"><br><br><input placeholder="Number" name="fld[]">
          <input type="hidden" name="fld[]" value="3">'
);
Замените во всем коде примера квадратные скобки на такое объявление и все будет работать.
 
PS. Open Server имеет в своем составе версию 5.4, и если на реальном сервере у вас есть РНР 5.4, то и на реальном, и на локальном лучше подключить ее. В версии 5.4 появились удобные фичи, которыми грех не воспользоваться.  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось laimas, 17.02.2015 в 12:01.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 
 
 
 
	 | 
 
 
 |