Проверка полей при оформлении заказа.

#
Проверка полей при оформлении заказа.
Столкнулся с такой проблемой как проверка полей при оформлении заказа. Аджакс и ХМЛ для меня язык не знаком. Но я думаю что не только я столкнулся с этой проблемой провекой полей.
Skype:ferdinant1988 ICQ:311960596 E-mail: ferdinant@i.ua
Модератор
#
Re: Проверка полей при оформлении заказа.
ferdinant,
Собственно суть проблемы Вы забыли описать
#
Re: Проверка полей при оформлении заказа.
1-2 шаг оформление заказа проверка заполнений полей. Фамилия Имя емейл и подобные поля. Просто РНР обработка у меня получаются всякие косяки.
Skype:ferdinant1988 ICQ:311960596 E-mail: ferdinant@i.ua
#
Re: Проверка полей при оформлении заказа.
<script type='text/javascript'>   
/** Проверка форм   
@param1 Object    — ссылка на элемент FORM;   
@param2 Array    — массив проверяемых элементов. Пример: ['select', 'input']   
*/   
function checkForm(obj, elems) {   
var element, pattern;   
    for (var i = 0; i < obj.elements.length; i++) {  // пробегаемся по всем элементам формы   
        element = obj.elements[i];   
        // Проверяем только нужные поля   
        if (elems != undefined)   
            if (elems.join().indexOf(element.type) < 0) continue;   
        // И только если есть чего говорить юзеру в случае ошибки   
        if (!element.getAttribute("check_message")) continue;   
        if (pattern = element.getAttribute("check_pattern")) {  // если задан рег   
            pattern = new RegExp(pattern, "g");   
            if (!pattern.test(element.value)) {   
                alert(element.getAttribute("check_message"));   
                element.focus();   
                return false;   
            }   
        } else if(/^\s*$/.test(element.value)) {  // иначе просто проверка что поле не пустое   
            alert(element.getAttribute("check_message"));   
            element.focus();   
            return false;   
        }   
    }   
return true;   
}   
</script>


Не работает
<input name="site_users_email" type="text" value="" size="40"  check_pattern="^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$" check_message="Вы не ввели вашу Email или ввели его не верно!!!"/>


Или помогите поправить этот код

<script>
// Проверка введенного имени и сообщения и "включение" кнопки submit
function checkreq() {
path = document.myform;
tmp = (path.sender.value == "");
if (!tmp && (path.sender.value.length < 3)) tmp = true;
path.Submit.disabled = tmp;
if (tmp) return;
tmp = (path.msg.value == "");
if (!tmp && (path.msg.value.length < 10)) tmp = true;
path.Submit.disabled = tmp;
}
// Проверка корректности заполнения полей формы
function check() {
p_sender = document.myform.sender.value.toString();
if(p_sender != "") {
if(p_sender.length<3 || p_sender.length>20) {
alert ("Укажите ваше имя (3-20 символов)!");
document.myform.sender.focus();
}
} else {
alert("Необходимо ввести имя!");
document.myform.sender.focus();
}
p_email = document.myform.sender.value.toString();
if (p_email != "") {
t = p_email.indexOf("@");
if((p_email.indexOf(".") == -1) || (t == -1) || (t < 1) || (t > p_email.length - 5) || (p_email.charAt(t - 1) == '.') || (p_email.charAt(t + 1) == '.')) {
alert("Некорректно указан E-mail !");
document.myform.email.focus();
return false;
}
}
p_icq = document.myform.icq.value.toString();
if(p_icq.length<5 || p_icq.length>9) {
alert ("Длина номера ICQ 5-9 символов!");
document.myform.icq.focus();
}
p_msg = document.myform.msg.value.toString();
if (p_msg.length < 10) {
alert ("Необходимо ввести текст сообщения (не менее 10 символов) !");
document.myform.msg.focus();
return false;
}
}
</script>

<form name='myform' method='post' action='test.php' onSubmit='return check();'>
<input type='text' name='sender' value='' maxlength=20 onkeypress='checkreq()' onkeyup='checkreq()' onblur='checkreq()'>
<input type='text' name='email' value=''>
<input type='text' name='icq' value='' maxlength=9 onKeyPress ='if ((event.keyCode < 48) || (event.keyCode > 57)) event.returnValue = false;'>
<textarea name=msg cols=35 rows=10 onkeypress='checkreq()' onkeyup='checkreq()' onblur='checkreq()'></textarea>
<input type='submit' name='Submit' value='Послать'>
</form>


Не работает правильно проверка поля емейл!!!
Skype:ferdinant1988 ICQ:311960596 E-mail: ferdinant@i.ua
#
Re: Проверка полей при оформлении заказа.
Данные вопросы по JavaScript не относятся к вопросам непосредственного функционирования системы управления.
#
Re: Проверка полей при оформлении заказа.
check_pattern="^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$" почему не работает когда я ставлю в форму. Выдает ошибку?
Skype:ferdinant1988 ICQ:311960596 E-mail: ferdinant@i.ua
#
Re: Проверка полей при оформлении заказа.
Меня тоже интересует эта проблема, и я считаю, что это небольшая недоработка системы.
Ведь это логично, что отправляя заказ с сайта необходимо минимум указать e-mail.
Господа разработчики, прошу учесть пожелание масс, и ответить на вопрос:
как сделать, чтобы при отправке заказа была проверка на обязательность заполнения некоторых полей.
Также прошу включить это исправление в очередное обновление системы.
#
Re: Проверка полей при оформлении заказа.
apolitika, постараемся учесть.
#
Re: Проверка полей при оформлении заказа.
У меня отключен модуль пользователи сайта. На PHP я сделал таким образом.
Динамическая страница "Интернет-магазин корзина":
      /* Если отключен модуль пользователей сайта, то вызывается этот подэтап */
      if (isset($_POST['step_1_1a']))
      {
         if ($_POST['site_users_name'] !='' && $_POST['site_users_surname'] !='' && $_POST['site_users_email']  !='' && $_POST['site_users_phone']  !='' && $_POST['site_users_company'] !='')
            {
               /* Сохраняем данные о пользователе в сессию */
               $_SESSION['site_users_name'] = to_str($_POST['site_users_name']);
               $_SESSION['site_users_surname'] = to_str($_POST['site_users_surname']);
               $_SESSION['site_users_patronymic'] = to_str($_POST['site_users_patronymic']);
               $_SESSION['site_users_email'] = to_str($_POST['site_users_email']);
               $_SESSION['site_users_phone'] = to_str($_POST['site_users_phone']);
               $_SESSION['site_users_fax'] = to_str($_POST['site_users_fax']);
               $_SESSION['site_users_address'] = to_str($_POST['site_users_address']);
               $_SESSION['site_users_company'] = to_str($_POST['site_users_company']);

               /* Запоминаем купон */
               $_SESSION['shop_coupon_text'] = to_str($_POST['shop_coupon_text']);
         
               /* Отображаем форму ввода адреса */
               $GLOBALS['shops']->ShowAddress(to_str($GLOBALS['LA']['xsl_delivery_address']), $shop_id);
            }else
            {
               $param = array();
               
               foreach ($_POST as $key => $value)
               {
                  $param['item_id'] = $key;
            
                  /* Получаем идентификатор записи в корзине по идентификатору пользователя и товара */
                  $cart_id = $GLOBALS['shops']->GetItemFromCart($shop_id, $site_user, $param['item_id']);
            
                  $param['cart_id'] = to_int($cart_id['shop_cart_id']);
                  $param['user_id'] = $site_user;
                  $param['shop_id'] = $shop_id;
                  $param['count'] = to_int($value);
            
                  /* Если количество = 0 - удаляем из корзины */
                  if ($param['count'] == 0)
                  {
                     $GLOBALS['shops']->DeleteCart($param);
                  }
                  else
                  {
                     $GLOBALS['shops']->UpdateCart($param);
                  }
               }

               $propertys = array();
               $propertys = to_str($_REQUEST['shop_coupon_text']);
               
               $external_propertys = array();
               $external_propertys['error'] = "Вы не заполнили все обязательные поля формы!";
               $external_propertys['site_users_surname'] = to_str($_POST['site_users_surname']);
               $external_propertys['site_users_name'] = to_str($_POST['site_users_name']);
               $external_propertys['site_users_patronymic'] = to_str($_POST['site_users_patronymic']);
               $external_propertys['site_users_company'] = to_str($_POST['site_users_company']);
               $external_propertys['site_users_email'] = to_str($_POST['site_users_email']);
               $external_propertys['site_users_phone'] = to_str($_POST['site_users_phone']);
               $external_propertys['site_users_fax'] = to_str($_POST['site_users_fax']);
               $external_propertys['site_users_address'] = to_str($_POST['site_users_address']);

               $GLOBALS['shops']->ShowCart($shop_id, $site_users_id, to_str($GLOBALS['LA']['xsl_cart']), $propertys, $external_propertys);
            }
      }

Дальше произвел корректировку в XSL шаблоне "МагазинКорзина":
<!-- Шаблон для корзины -->
<xsl:variable name="recount" select="recount"/>

<xsl:template match="/cart">

  <!-- Выводим ошибку (error), если она была передана через внешний параметр -->
  <xsl:if test="error != ''">
  <div id="error"><xsl:value-of disable-output-escaping="yes" select="error"/></div>
  </xsl:if>
...

            <!-- В случае если отключен модуль пользователей сайта, запрашиваем информацию
            о пользователе сайта здесь --><br /><br />
            <table align="center" border="0" cellspacing="0" cellpadding="2">
                <tr class="shop_cart_table_title">
                   <td colspan="2" align="center">Данные о заказчике</td>
            </tr>
                <tr>
                   <td>Фамилия<font color="#FF0000">*</font></td>
               <td><input name="site_users_surname" type="text" value="{site_users_surname}" size="40"/></td>
            </tr>
                <tr>
                   <td>Имя<font color="#FF0000">*</font></td>
               <td><input name="site_users_name" type="text" value="{site_users_name}" size="40"/></td>
            </tr>
                <tr>
                   <td>Отчество</td>
               <td><input name="site_users_patronymic" type="text" value="{site_users_patronymic}" size="40"/></td>
            </tr>
                <tr>
                   <td>Компания<font color="#FF0000">*</font></td>
               <td><input name="site_users_company" type="text" value="{site_users_company}" size="40"/></td>
            </tr>
                <tr>
                   <td>E-mail<font color="#FF0000">*</font></td>
               <td><input name="site_users_email" type="text" value="{site_users_email}" size="40"/></td>
            </tr>
            <tr>
                   <td>Телефон<font color="#FF0000">*</font></td>
               <td><input name="site_users_phone" type="text" value="{site_users_phone}" size="40"/></td>
            </tr>
                <tr>
                   <td>Факс</td>
               <td><input name="site_users_fax" type="text" value="{site_users_fax}" size="40"/></td>
            </tr>
                <tr>
                   <td>Юридический адрес</td>
               <td><input name="site_users_address" type="text" value="{site_users_address}" size="40"/></td>
            </tr>
            </table>
            <br/>
            <div align="center" style="width:100%">
               <font color="#FF0000">*</font> - Обязательные для заполнения поля!!!
            </div>
            <br/>
            <!-- Добавляем скрытое поле с указанием подшага -->
            <input name="step_1_1a" type="hidden" value="1"/>

Есть один косяк, если количество товаров в текстовом поле изменят, даже случайно, при ошибке будет произведен пересчет.
И не сделана проверка на корректность e-mail адреса. А в общем работает.
Авторизация