Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.10.2010, 17:05
Аспирант
Отправить личное сообщение для denisOgr Посмотреть профиль Найти все сообщения от denisOgr
 
Регистрация: 26.07.2010
Сообщений: 31

Проверка полей отправляемой формы.
Добрый день. Вопрос по проверке полей форм. Есть страница на которой много форм. это аукцион, форма с возможностью сделать ставку.
Мне нужно что бы при заполенении текстового(цифра ставки) при нажатии сделать ставку эта форма проверялась и если все хорошо то оправлялась.
Проблема как провериь значение input именно отправляемой формы, с учетом что у всех форм одинакой class. И в чем ошибка в проверке полей. Конкретнее, вот код
Вот скрипт
<script type="text/javascript">    
    $(document).ready(function() {
       $('.set-bid').submit(function() {
  var     start_price = $("#price").val(),
                id = $("#idc").val(),
                bid_id = "#bid"+id,
                bid = $(bid_id).val(),
                allFields = $([]).add(start_price).add(id).add(bid),
                tips = $(".validateTips");

                function checkLength(o,n,min,max) {

                    if ( o.val().length > max || o.val().length < min ) {
                        alert('Ставка не принята! Количество символов должно быть больше 1 и меньше 10');
                        return false;
                    } else {
                        return true;
                    }

                }

                function checkRegexp(o,regexp,n) {

                    if ( !( regexp.test( o.val() ) ) ) {
                        alert('Ставка не принята! Ваша ставка должна быть числом.');
                        return false;
                    } else {
                        return false;
                       
                    }

                }

                function checkStratPrice(start,now) {

                    if ( start>now ) {
                        alert('Ставка не принята! Ваша ставка должна быть больше или равна стартовой.' );
                        return false;
                    } else {
                        return true;
                    }

                }
                var bValid = true;
               bValid = checkRegexp(bid,/^([0-9_])+$/i,"");
               bValid = bValid && checkStratPrice(start_price,bid);
               bValid = bValid && checkLength(bid,"",1,10);
               

                if (!bValid) {
                    return false;
                }
  
});
});
</script>


Вот сам код форм
<form action="/auction.php"
         method="GET"  class="set-bid" >
       <input type="hidden" id="cart" name="cart" value="auction" />
       <input type="hidden" id="idc" name="idc" value="1" />
       <input type="hidden" id="price" name="price" value="50" />
       <input  type="text" size="4" name="bid" id="bid"  />
       <div class="clear"></div>
       <input type="image" src="/i/but_auct_bid.png" /><br><br>       
        <b><a href="/auction/now/1/">купить сейчас 150</a></b><br>
        </form>

<form action="/auction.php"
         method="GET"  class="set-bid" >
       <input type="hidden" id="cart" name="cart" value="auction" />
       <input type="hidden" id="idc" name="idc" value="2" />
       <input type="hidden" id="price" name="price" value="20" />
       <input  type="text" size="4" name="bid" id="bid"  />
       <div class="clear"></div>
       <input type="image" src="/i/but_auct_bid.png" /><br><br>       
        <b><a href="/auction/now/<%ID%>/">купить сейчас 100</a></b><br>
        </form>

Проблемы
1. При более 1-ой формы берет значение input-ов из ближайшей. Это понятно. поэтому мне нужно брать из формы из той которая отправляется или той где был нажата кнопка ставка. Можно ли такое?
2. Не происходит проверка на ввод только цифр. Функция checkRegexp должна сравнивать число с рег выражением, а я даже в функцию не вхожу .
3. Не происходит проверка на длину вводимой ставки функцией checkLength.
4. Ввожу ставку больше 100 пишет что ставка должна быть больше стартовой, проверяю через alert вывожу два сравнимых значия все верно 100>50 . А ошибку выдает. В общем намучался. Хелп

Jquery-очень класная штука. но иногда так "выводит")
В чем проблемы помогите товарищи!(
Ответить с цитированием
  #2 (permalink)  
Старый 16.10.2010, 19:48
Интересующийся
Отправить личное сообщение для walabyn Посмотреть профиль Найти все сообщения от walabyn
 
Регистрация: 09.10.2010
Сообщений: 18

хм.. гетом отправляешь форму.. может стоит постом отправлять?
но в любом случае у jQuery есть функции $.get и $.post (+есть $.json).
твой подход - проверять на .submit - тоже можно но геморнее.
var hasError = false; //по дефолту ошибки нет, вводим переменную
		var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i); //проверка e-mail
		
		var nameVal = $("#clientName").val();
		if(nameVal == '') {
			$("#nameError").show(); //делаем невидимый span или p с текстом ошибки под нужным инпутом с id="nameError", если поле с id="clientName" не заполнено - показываем
			hasError = true;
		} //если инпут с id="clientName" не заполнено, то проверяющая переменная становится true
		
		var emailFromVal = $("#clientEmail").val();
		if(emailFromVal == '') {
			$("#emailError1").show();
			hasError = true;
		} else if(!pattern.test(emailFromVal)) {
			$("#emailError2").show();
			hasError = true;
		} //проверка паттерна emaila (функция test)

		//итд итп, потом проверяем, если hasError=false отправляем ($.post), иначе не отправляем
Ответить с цитированием
  #3 (permalink)  
Старый 18.10.2010, 00:32
Аспирант
Отправить личное сообщение для denisOgr Посмотреть профиль Найти все сообщения от denisOgr
 
Регистрация: 26.07.2010
Сообщений: 31

Спасибо ,walabyn ,за ответ. Сделал.
Скажите, я новичек в js(jqueru), но хорошо знаю php. Как можно проверять скрипт на ошибки. а то он просто не выполняется и все. Например в php выдается какая ошибка и номер строки.
а здесь как посмотреть?
Ответить с цитированием
  #4 (permalink)  
Старый 18.10.2010, 00:44
Интересующийся
Отправить личное сообщение для walabyn Посмотреть профиль Найти все сообщения от walabyn
 
Регистрация: 09.10.2010
Сообщений: 18

в php-обработчике (который на экшене) делаете обработку и ошибки или успехи заносите в ассоциативный массив, допустим, $mess, а в самом конце делаете echo json_encode($mass); и когда вы передаете переменную data в функцию ответа jquery, то обращение к элементам этого массива будет например data.error

только зачем проверять ошибки на стороне jQuery? там же нету сложных скриптов... или я что-то не понял) я описал ситуацию когда мы транслируем в jQuery ошибки из php
Ответить с цитированием
  #5 (permalink)  
Старый 18.10.2010, 02:15
Аспирант
Отправить личное сообщение для denisOgr Посмотреть профиль Найти все сообщения от denisOgr
 
Регистрация: 26.07.2010
Сообщений: 31

нет мне нужно не транслятор в jQuery ошибки из php. а ошибки jQuery выводились

ну например кода я написал $(this).attr(rel);у меня скрипт не шел дальше, я ломал голову в чем проблема, а потом понял что нужно $(this).attr("rel"); кавычки забыл

было бы хорошо если бы написал бы об ошибки разработчик или что то еще чтоли
Например в 5-ой строке в .....attr(rel) есть ошибка. возможно забыли поставить кавычки.
как в php пишут.
Ответить с цитированием
  #6 (permalink)  
Старый 18.10.2010, 02:30
Интересующийся
Отправить личное сообщение для walabyn Посмотреть профиль Найти все сообщения от walabyn
 
Регистрация: 09.10.2010
Сообщений: 18

увы, в яваскрипте этого нет)
Ответить с цитированием
  #7 (permalink)  
Старый 18.10.2010, 19:40
Аватар для sysya
Профессор
Отправить личное сообщение для sysya Посмотреть профиль Найти все сообщения от sysya
 
Регистрация: 27.12.2009
Сообщений: 292

Вообще есть firebug для firefox'а, он выводит ошибки и вообще сделан для удобства разработчика. В опере есть вывод консоли ошибок и так далее... Почти у каждого браузера есть свои настройки для вывода ошибок в коде javascript. Хотя если есть лишние деньги, вам плагин по отлову ошибок для jQ напишут
__________________
Нет предела совершенству...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простая проверка формы. Добавить "динамики". Jurasmi Элементы интерфейса 3 07.04.2010 16:48
Проверка полей формы Qwe2Qwe Общие вопросы Javascript 7 27.02.2010 19:43
Собрать значения всех полей формы vvsh Events/DOM/Window 3 09.11.2009 00:35
Проверка полей формы Rush Общие вопросы Javascript 2 16.10.2008 23:44
проверка полей формы!!!! DENAT Общие вопросы Javascript 0 05.06.2008 22:14