0 Пользователей и 1 Гость просматривают эту тему.
  • 8 Ответов
  • 2573 Просмотров
*

sashgera

  • Захожу иногда
  • 113
  • 0 / 0
Здравствуйте
Если в оформлении заказа не сделать выбор Способа оплаты, то страница перезагружается и выводится сообщение - "Пожалуйста, выберите способ оплаты"

За проверку отвечает этот кусок кода:
Код: php
if (!$this->validate_form($d, $thisch)) {
$msg = @unserialize($_SESSION['error_msg']);
if (!empty($vmLogger->_messages) && (is_array($vmLogger->_messages)))
$msg .= '<br />'.end($vmLogger->_messages);
$_SESSION['error_msg'] = serialize($msg.'<br />Пожалуйста, выберите способ оплаты');
return false;
}

Как можно сделать валидацию без перезагрузки страницы?

Пробовал сделать JS. В начале страницы, перед кодом PHP:
Код: javascript
<script type="text/javascript"> 
function checks (obj){
 if (obj.payment_method_id.checked == '') {
 alert ('Пожалуйста, выберите способ оплаты'); return false;}
}
</script>

Не получилось..
« Последнее редактирование: 23.09.2015, 06:05:21 от sashgera »
*

fsv

  • Moderator
  • 2765
  • 402 / 2
Цитировать
В начале страницы, перед кодом PHP:
Функцию вставили. А как ее вызываете?

Обычно на клик по кнопке "заказать" вешается обработчик валидации заполнения полей формы, если true, форма отсылается.
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

sashgera

  • Захожу иногда
  • 113
  • 0 / 0
Функцию вставили. А как ее вызываете?
Вызов добавил в onclick кнопки
Код: html4strict
<input type="submit" class="button_confirm" value="<?php echo $VM_LANG->_('PHPSHOP_ORDER_CONFIRM_MNU')?>" onclick="javascript: return(submitregistration());checks;" id="confirmbtn" />
А как сделать обработчик валидации я не знаю. Поможете?
*

fsv

  • Moderator
  • 2765
  • 402 / 2
У вас уже есть по клику вызов функции submitregistration(). Уберите после нее "чек", в submitregistration() допишите вашу проверку. Насколько помню (давно было), в ней валидация заполнения адресных полей. Плюсом добавляйте в нее и свои поля, по аналогии смотрите, там переменной false присваивается.

Цитировать
А как сделать обработчик валидации я не знаю.
Это второй вариант, возможно, и без него все получится. "Возможно", т.к. там у вас OPC (в др.теме упоминали), плюс что там еще накручено, не знаю. Попробуйте сначала с submitregistration().
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

sashgera

  • Захожу иногда
  • 113
  • 0 / 0
fsv, submitregistration() нашел только здесь:
(здесь проверка полей адреса)
administrator/components/com_virtuemart/classes/ps_userfield.php
Код: php
function printJS_formValidation( $required_fields, $allfields, $formname = 'adminForm', $functioname='submitregistration', $div_id_postfix = '_div' ) {
global $VM_LANG, $page, $mainframe, $vm_mainframe;

дописал:
Код: php
$field_list = str_replace( "'payment_method_id',", '', $ps_payment_method );

ниже, после проверки email
дописал:
Код: php
if( isset( $ps_payment_method['payment_method_id'] )) {

echo '
function checks (obj){
  if (obj.payment_method_id.checked == \'\') {
  alert (\'Пожалуйста, выберите способ оплаты\'); return false;}
  } ';
}

в итоге - проверка оплаты не работает, что-то сделал не так
« Последнее редактирование: 23.09.2015, 21:25:26 от sashgera »
*

fsv

  • Moderator
  • 2765
  • 402 / 2
Все, что в функции написали, уберите. Попробуйте в ее конце код
Код
// Finish the validation function
    echo '
        if( !isvalid) {
заменить на
Код
// Finish the validation function
    echo '
        if( document.querySelectorAll("input[name=payment_method_id]:checked").length < 1 ){
            alert( "Выберите способ оплаты" );
            return false;
        }
        if( !isvalid) {
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

sashgera

  • Захожу иногда
  • 113
  • 0 / 0
fsv, большое спасибо!
*

fsv

  • Moderator
  • 2765
  • 402 / 2
лучше обернуть еще одним условием:
Код
if( document.querySelectorAll("input[name=payment_method_id]").length ){
if( document.querySelectorAll("input[name=payment_method_id]:checked").length < 1 ){
alert( "Выберите способ оплаты" );
return false;
}
}
Иначе, если функция используется не только при одностраничном оформлении (или вид оплаты будет только 1), эти изменения будут мешать.
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

sashgera

  • Захожу иногда
  • 113
  • 0 / 0
fsv, спасибо!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Извлечь введеные пользователем данные с страницы с контактами

Автор hdsite

Ответов: 13
Просмотров: 1969
Последний ответ 14.09.2013, 01:28:25
от barboss
Две формы оформления заказа с разными способами оплаты

Автор lada89

Ответов: 1
Просмотров: 1184
Последний ответ 16.10.2012, 12:54:13
от fsv
Иконка способа оплаты

Автор Dimir

Ответов: 0
Просмотров: 1292
Последний ответ 22.09.2012, 01:52:55
от Dimir
Обновление страницы при регестрации/авторизации VirtueMart

Автор zoira

Ответов: 1
Просмотров: 1669
Последний ответ 16.05.2012, 10:21:41
от SnowMan
Способ оплаты через заказ без регистрации!

Автор artefakt

Ответов: 8
Просмотров: 3192
Последний ответ 11.02.2012, 18:32:05
от Edan