pm_debit Проверка на заполненность полей.

Тема в разделе "JoomShopping", создана пользователем S2pidsMan, 12.02.2017.

  1. Offline

    S2pidsMan Недавно здесь

    Регистрация:
    12.02.2017
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    Всем доброго времени суток.
    Столкнулся с такой проблемой, вот оригинальный скрипт:
    Код (CODE):
    1. <?php
    2. /**
    3. * @version      4.4.1 10.02.2014
    4. * @author       MAXXmarketing GmbH
    5. * @package      Jshopping
    6. * @copyright    Copyright (C) 2010 webdesigner-profi.de. All rights reserved.
    7. * @license      GNU/GPL
    8. */
    9. defined('_JEXEC') or die('Restricted access');
    10. ?>
    11. <table>
    12.    <tr>
    13.      <td width="200">
    14.        <?php echo _JSHOP_ACCOUNT_HOLDER;?>
    15.      </td>
    16.      <td>
    17.        <input type="text" class="inputbox" name="params[pm_debit][acc_holder]" id="params_pm_debit_acc_holder" value="<?php print $params['acc_holder']?>"/>
    18.      </td>
    19.    </tr>
    20.    <tr>
    21.      <td>
    22.        <?php echo _JSHOP_IBAN?>
    23.      </td>
    24.      <td>
    25.        <input type="text" class="inputbox" name="params[pm_debit][bank_iban]" id="params_pm_debit_bank_iban" value="<?php print $params['bank_iban']?>"/>
    26.      </td>
    27.    </tr>
    28.    <tr>
    29.      <td>
    30.        <?php echo _JSHOP_BIC_BIC?>
    31.      </td>
    32.      <td>
    33.        <input type="text" class="inputbox" name="params[pm_debit][bank_bic]" id="params_pm_debit_bank_bic" value="<?php print $params['bank_bic']?>"/>
    34.      </td>
    35.    </tr>
    36.    <tr>
    37.      <td>
    38.        <?php echo _JSHOP_BANK?>
    39.      </td>
    40.      <td>
    41.        <input type="text" class="inputbox" name="params[pm_debit][bank]" id="params_pm_debit_bank" value="<?php print $params['bank']?>"/>
    42.      </td>
    43.    </tr>
    44. </table>
    45. <script type="text/javascript">
    46.   function check_pm_debit(){
    47.     var ar_focus=new Array();
    48.     var error=0;
    49.     unhighlightField('payment_form');
    50.     if (isEmpty($F_("params_pm_debit_acc_holder"))) {
    51.         ar_focus[ar_focus.length]="params_pm_debit_acc_holder";
    52.         error=1;
    53.     }
    54.     if (isEmpty($F_("params_pm_debit_bank_iban"))) {
    55.         ar_focus[ar_focus.length]="params_pm_debit_bank_iban";
    56.         error=1;
    57.     }
    58.     if (isEmpty($F_("params_pm_debit_bank"))) {
    59.         ar_focus[ar_focus.length]="params_pm_debit_bank";
    60.         error=1;
    61.     }
    62.     if (error){
    63.         $_(ar_focus[0]).focus();
    64.         for (var i=0; i<ar_focus.length; i++ ){
    65.            highlightField(ar_focus[i]);
    66.         }
    67.         return false;
    68.     }
    69.     jQuery('#payment_form').submit();
    70.   }
    71.  </script>

    В нем скрипт
    Код (CODE):
    1. <script type="text/javascript">
    2.   function check_pm_debit(){
    3.     var ar_focus=new Array();
    4.     var error=0;
    5.     unhighlightField('payment_form');
    6.     if (isEmpty($F_("params_pm_debit_acc_holder"))) {
    7.         ar_focus[ar_focus.length]="params_pm_debit_acc_holder";
    8.         error=1;
    9.     }
    10.     if (isEmpty($F_("params_pm_debit_bank_iban"))) {
    11.         ar_focus[ar_focus.length]="params_pm_debit_bank_iban";
    12.         error=1;
    13.     }
    14.     if (isEmpty($F_("params_pm_debit_bank"))) {
    15.         ar_focus[ar_focus.length]="params_pm_debit_bank";
    16.         error=1;
    17.     }
    18.     if (error){
    19.         $_(ar_focus[0]).focus();
    20.         for (var i=0; i<ar_focus.length; i++ ){
    21.            highlightField(ar_focus[i]);
    22.         }
    23.         return false;
    24.     }
    25.     jQuery('#payment_form').submit();
    26.   }
    27.  </script>

    Как я понимаю - проверяет заполнены ли 3 поля: acc_holder, bank_iban и debit_bank. Если они не заполнены, то заявка не отправляется и эти поля подсвечиваются.

    Я переписал этот скрипт под свои нужные поля, вот что получилось:
    Код (CODE):
    1. <?php
    2. /**
    3. * @version      4.4.1 10.02.2014
    4. * @author       MAXXmarketing GmbH
    5. * @package      Jshopping
    6. * @copyright    Copyright (C) 2010 webdesigner-profi.de. All rights reserved.
    7. * @license      GNU/GPL
    8. */
    9. defined('_JEXEC') or die('Restricted access');
    10. ?>
    11. <table>
    12.    <tr>
    13.      <td width="200">
    14.        <?php echo _JSHOP_ACCOUNT_NAME;?>
    15.      </td>
    16.      <td>
    17.        <input type="text" class="inputbox"  name="params[pm_debit][name]" id="params_pm_debit_name" value="<?php print $params['name']?>"/>
    18.      </td>
    19.    </tr>
    20.    
    21.     <tr>
    22.      <td width="200">
    23.        <?php echo "Юридический адрес";?>
    24.      </td>
    25.      <td>
    26.        <input type="text" class="inputbox" name="params[pm_debit][faddr]" id="params_pm_debit_faddr" value="<?php print $params['faddr']?>"/>
    27.      </td>
    28.    </tr>
    29.    
    30.    <tr>
    31.      <td width="200">
    32.        <?php echo "Фактический адрес";?>
    33.      </td>
    34.      <td>
    35.        <input type="text" class="inputbox" name="params[pm_debit][addr]" id="params_pm_debit_addr" value="<?php print $params['addr']?>"/>
    36.      </td>
    37.    </tr>
    38.    
    39.    
    40.    <tr>
    41.      <td width="200">
    42.        <?php echo "ИНН/КПП";?>
    43.      </td>
    44.      <td>
    45.        <input type="text" class="inputbox" name="params[pm_debit][inn]" id="params_pm_debit_inn" value="<?php print $params['inn']?>"/>
    46.      </td>
    47.    </tr>
    48.    
    49.    
    50.    <tr>
    51.      <td width="200">
    52.        <?php echo "ОКПО";?>
    53.      </td>
    54.      <td>
    55.        <input type="text" class="inputbox" name="params[pm_debit][okpo]" id="params_pm_debit_okpo" value="<?php print $params['okpo']?>"/>
    56.      </td>
    57.    </tr>
    58.    
    59.    <tr>
    60.      <td width="200">
    61.        <?php echo "Наименования банка";?>
    62.      </td>
    63.      <td>
    64.        <input type="text" class="inputbox" name="params[pm_debit][nazb]" id="params_pm_debit_nazb" value="<?php print $params['nazb']?>"/>
    65.      </td>
    66.    </tr>
    67.    <tr>
    68.      <td width="200">
    69.        <?php echo "БИК";?>
    70.      </td>
    71.      <td>
    72.        <input type="text" class="inputbox" name="params[pm_debit][bik]" id="params_pm_debit_bik" value="<?php print $params['bik']?>"/>
    73.      </td>
    74.    </tr>
    75.    <tr>
    76.      <td width="200">
    77.        <?php echo "Р/С";?>
    78.      </td>
    79.      <td>
    80.        <input type="text" class="inputbox" name="params[pm_debit][ras]" id="params_pm_debit_ras" value="<?php print $params['ras']?>"/>
    81.      </td>
    82.    </tr>
    83.    <tr>
    84.      <td width="200">
    85.        <?php echo "К/С";?>
    86.      </td>
    87.      <td>
    88.        <input type="text" class="inputbox" name="params[pm_debit][ks]" id="params_pm_debit_ks" value="<?php print $params['ks']?>"/>
    89.      </td>
    90.    </tr>
    91.    <tr>
    92.      <td width="200">
    93.        <?php echo "Ген. директор";?>
    94.      </td>
    95.      <td>
    96.        <input type="text" class="inputbox" name="params[pm_debit][gend]" id="params_pm_debit_gend" value="<?php print $params['gend']?>"/>
    97.      </td>
    98.    </tr>
    99.    <tr>
    100.      <td width="200">
    101.        <?php echo "Телефон";?>
    102.      </td>
    103.      <td>
    104.        <input type="text" class="inputbox" name="params[pm_debit][tele]" id="params_pm_debit_tele" value="<?php print $params['tele']?>"/>
    105.      </td>
    106.    </tr>
    107. </table>
    108. <script type="text/javascript">
    109.   function check_pm_debit(){
    110.     var ar_focus=new Array();
    111.     var error=0;
    112.     unhighlightField('payment_form');
    113.     if (isEmpty($F_("params_pm_debit_name"))) {
    114.         ar_focus[ar_focus.length]="params_pm_debit_name";
    115.         error=1;
    116.     }
    117.     if (isEmpty($F_("params_pm_debit_addr"))) {
    118.         ar_focus[ar_focus.length]="params_pm_debit_addr";
    119.         error=1;
    120.     }
    121.     if (isEmpty($F_("params_pm_debit_faddr"))) {
    122.         ar_focus[ar_focus.length]="params_pm_debit_faddr";
    123.         error=1;
    124.     }
    125.     if (isEmpty($F_("params_pm_debit_inn"))) {
    126.         ar_focus[ar_focus.length]="params_pm_debit_inn";
    127.         error=1;
    128.     }
    129.     if (isEmpty($F_("params_pm_debit_okpo"))) {
    130.         ar_focus[ar_focus.length]="params_pm_debit_okpo";
    131.         error=1;
    132.     }
    133.     if (isEmpty($F_("params_pm_debit_nazbe"))) {
    134.         ar_focus[ar_focus.length]="params_pm_debit_nazb";
    135.         error=1;
    136.     }
    137.     if (isEmpty($F_("params_pm_debit_ras"))) {
    138.         ar_focus[ar_focus.length]="params_pm_debit_ras";
    139.         error=1;
    140.     }
    141.     if (isEmpty($F_("params_pm_debit_ks"))) {
    142.         ar_focus[ar_focus.length]="params_pm_debit_ks";
    143.         error=1;
    144.     }
    145.     if (isEmpty($F_("params_pm_debit_bik"))) {
    146.         ar_focus[ar_focus.length]="params_pm_debit_bik";
    147.         error=1;
    148.     }
    149.     if (isEmpty($F_("params_pm_debit_gend"))) {
    150.         ar_focus[ar_focus.length]="params_pm_debit_gend";
    151.         error=1;
    152.     }
    153.     if (isEmpty($F_("params_pm_debit_tele"))) {
    154.         ar_focus[ar_focus.length]="params_pm_debit_tele";
    155.         error=1;
    156.     }
    157.     if (error){
    158.         $_(ar_focus[0]).focus();
    159.         for (var i=0; i<ar_focus.length; i++ ){
    160.            highlightField(ar_focus[i]);
    161.         }
    162.         return false;
    163.     }
    164.     jQuery('#payment_form').submit();
    165.   }
    166.  </script>

    Как видите мой скрипт снизу один в один, как в оригинале. Но почему то, у меня не срабатывает проверка на заполненность. Можете подсказать в чем проблема?
    Спасибо
     
  2.  
  3. Offline

    S2pidsMan Недавно здесь

    Регистрация:
    12.02.2017
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    UPD
    Если оставить только 4 проверки - то они срабатывают, если проверок больше, то ни одна не срабатывает.
     
  4. OlegK
    Offline

    OlegK Russian Joomla! Team Команда форума ⇒ Профи ⇐

    Регистрация:
    17.01.2011
    Сообщения:
    7 813
    Симпатии:
    771
    Пол:
    Мужской
    Проверяй по каждому полу отдельно.
     
  5. Offline

    S2pidsMan Недавно здесь

    Регистрация:
    12.02.2017
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    Все поля корректные.
    Мне так кажется, что где то стоит условия на проверку не более 4 полей) Я в джумле новичок, самому не найти где.
     
  6. OlegK
    Offline

    OlegK Russian Joomla! Team Команда форума ⇒ Профи ⇐

    Регистрация:
    17.01.2011
    Сообщения:
    7 813
    Симпатии:
    771
    Пол:
    Мужской
    А при чем Джумла ? Ты выложил таблицу в полями и яваскрипт, я понял что не получается пройти проверку полей в браузере.
    Ищи в настройке движка ЖШ список полей заполняемых юзером.
     
  7. Offline

    S2pidsMan Недавно здесь

    Регистрация:
    12.02.2017
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    Эта таблица и js и есть встроенный в ЖШ модуль pm_debit
    Он состоит из двух скриптов.
    Вот оригиналы:
    paymentform.php
    Код (CODE):
    1. <?php
    2. /**
    3. * @version      4.4.1 10.02.2014
    4. * @author       MAXXmarketing GmbH
    5. * @package      Jshopping
    6. * @copyright    Copyright (C) 2010 webdesigner-profi.de. All rights reserved.
    7. * @license      GNU/GPL
    8. */
    9. defined('_JEXEC') or die('Restricted access');
    10. ?>
    11. <table>
    12.    <tr>
    13.      <td width="200">
    14.        <?php echo _JSHOP_ACCOUNT_HOLDER;?>
    15.      </td>
    16.      <td>
    17.        <input type="text" class="inputbox" name="params[pm_debit][acc_holder]" id="params_pm_debit_acc_holder" value="<?php print $params['acc_holder']?>"/>
    18.      </td>
    19.    </tr>
    20.    <tr>
    21.      <td>
    22.        <?php echo _JSHOP_IBAN?>
    23.      </td>
    24.      <td>
    25.        <input type="text" class="inputbox" name="params[pm_debit][bank_iban]" id="params_pm_debit_bank_iban" value="<?php print $params['bank_iban']?>"/>
    26.      </td>
    27.    </tr>
    28.    <tr>
    29.      <td>
    30.        <?php echo _JSHOP_BIC_BIC?>
    31.      </td>
    32.      <td>
    33.        <input type="text" class="inputbox" name="params[pm_debit][bank_bic]" id="params_pm_debit_bank_bic" value="<?php print $params['bank_bic']?>"/>
    34.      </td>
    35.    </tr>
    36.    <tr>
    37.      <td>
    38.        <?php echo _JSHOP_BANK?>
    39.      </td>
    40.      <td>
    41.        <input type="text" class="inputbox" name="params[pm_debit][bank]" id="params_pm_debit_bank" value="<?php print $params['bank']?>"/>
    42.      </td>
    43.    </tr>
    44. </table>
    45. <script type="text/javascript">
    46.   function check_pm_debit(){
    47.     var ar_focus=new Array();
    48.     var error=0;
    49.     unhighlightField('payment_form');
    50.     if (isEmpty($F_("params_pm_debit_acc_holder"))) {
    51.         ar_focus[ar_focus.length]="params_pm_debit_acc_holder";
    52.         error=1;
    53.     }
    54.     if (isEmpty($F_("params_pm_debit_bank_iban"))) {
    55.         ar_focus[ar_focus.length]="params_pm_debit_bank_iban";
    56.         error=1;
    57.     }
    58.     if (isEmpty($F_("params_pm_debit_bank"))) {
    59.         ar_focus[ar_focus.length]="params_pm_debit_bank";
    60.         error=1;
    61.     }
    62.     if (error){
    63.         $_(ar_focus[0]).focus();
    64.         for (var i=0; i<ar_focus.length; i++ ){
    65.            highlightField(ar_focus[i]);
    66.         }
    67.         return false;
    68.     }
    69.     jQuery('#payment_form').submit();
    70.   }
    71.  </script>

    pm_debit.php
    Код (CODE):
    1. <?php
    2. /**
    3. * @version      4.4.1 10.02.2014
    4. * @author       MAXXmarketing GmbH
    5. * @package      Jshopping
    6. * @copyright    Copyright (C) 2010 webdesigner-profi.de. All rights reserved.
    7. * @license      GNU/GPL
    8. */
    9. defined('_JEXEC') or die('Restricted access');
    10.  
    11. class pm_debit extends PaymentRoot{
    12.    
    13.     function showPaymentForm($params, $pmconfigs){
    14.         if (!isset($params['acc_holder'])) $params['acc_holder'] = '';
    15.         if (!isset($params['bank_iban'])) $params['bank_iban'] = '';
    16.         if (!isset($params['bank_bic'])) $params['bank_bic'] = '';
    17.         if (!isset($params['bank'])) $params['bank'] = '';
    18.         include(dirname(__FILE__)."/paymentform.php");
    19.     }
    20.  
    21.     function getDisplayNameParams(){
    22.         $names = array('acc_holder' => _JSHOP_ACCOUNT_HOLDER, 'bank_iban' => _JSHOP_IBAN, 'bank_bic' => _JSHOP_BIC_BIC, 'bank' => _JSHOP_BANK );
    23.         return $names;
    24.     }
    25. }
    26. ?>

    В настройках ЖШ список полей заполняемых юзером - не то.
    В данном скрипте можно указать произвольные поля, которые не выводятся в админке.

    Все работает хорошо, кроме одного - не проверяется на заполненность более 4 полей.
    То есть, если оставить любые 4 проверки - они проверяются. если поставить например пятую проверку, то ни одна проверка не срабатывает.
    В отладчике все чисто.
     
  8. OlegK
    Offline

    OlegK Russian Joomla! Team Команда форума ⇒ Профи ⇐

    Регистрация:
    17.01.2011
    Сообщения:
    7 813
    Симпатии:
    771
    Пол:
    Мужской
    И где в этих скриптах форма, которая отправляется ?
    Код (javascript):
    1. jQuery('#payment_form').submit();

    Так в скрипте или в параметрах модуля ? Ищи форму, и куда она отправляет данные, и в уже обработчике данных, смотри проверку олей на сервере. .
     
  9. Offline

    S2pidsMan Недавно здесь

    Регистрация:
    12.02.2017
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    По поиску "payment_form". Нашел всего в ЖШ два вхождения:
    \com_jshopping\js\functions.js
    Код (CODE):
    1. function checkPaymentForm(){
    2.     if (activePaymentMethod){      
    3.         if (payment_type_check[activePaymentMethod]=='1'){
    4.             try {
    5.                 eval("check_"+activePaymentMethod+"();");
    6.             }catch(exception){
    7.                 console.log(exception);
    8.                 jQuery('#payment_form').submit();
    9.             }
    10.         }else{
    11.             jQuery('#payment_form').submit();
    12.         }
    13.     }
    14. }

    \com_jshopping\templates\responsive\checkout\payments.php
    Код (CODE):
    1. <div id="comjshop">
    2.     <?php print $this->checkout_navigator?>
    3.     <?php print $this->small_cart?>
    4.  
    5.     <script type="text/javascript">
    6.     var payment_type_check = {};
    7.     <?php foreach($this->payment_methods as  $payment){?>
    8.         payment_type_check['<?php print $payment->payment_class;?>'] = '<?php print $payment->existentcheckform;?>';
    9.     <?php }?>
    10.     </script>
    11.  
    12.     <div class="jshop checkout_payment_block">
    13.         <form id = "payment_form" name = "payment_form" action = "<?php print $this->action ?>" method = "post" autocomplete="off" enctype="multipart/form-data">
    14.             <?php print $this->_tmp_ext_html_payment_start?>
    15.             <table id="table_payments">
    16.                 <?php
    17.                 $payment_class = "";
    18.                 foreach($this->payment_methods as  $payment){
    19.                     if ($this->active_payment==$payment->payment_id) $payment_class = $payment->payment_class;
    20.                     ?>
    21.                     <tr class="name">
    22.                         <td class="name">
    23.                             <input type = "radio" name = "payment_method" id = "payment_method_<?php print $payment->payment_id ?>" onclick = "showPaymentForm('<?php print $payment->payment_class ?>')" value = "<?php print $payment->payment_class ?>" <?php if ($this->active_payment==$payment->payment_id){?>checked<?php } ?> />
    24.                             <label for = "payment_method_<?php print $payment->payment_id ?>"><?php
    25.                                 if ($payment->image){
    26.                                     ?><span class="payment_image"><img src="<?php print $payment->image?>" alt="<?php print htmlspecialchars($payment->name)?>" /></span><?php
    27.                                 }
    28.                                 ?><b><?php print $payment->name;?></b>
    29.                                 <?php if ($payment->price_add_text!=''){?>
    30.                                     <span class="payment_price">(<?php print $payment->price_add_text?>)</span>
    31.                                 <?php }?>
    32.                             </label>
    33.                         </td>
    34.                     </tr>
    35.                     <tr class="paymform" id="tr_payment_<?php print $payment->payment_class ?>" <?php if ($this->active_payment != $payment->payment_id){?>style = "display:none"<?php } ?>>
    36.                         <td class = "jshop_payment_method">
    37.                             <?php print $payment->payment_description?>
    38.                             <?php print $payment->form?>
    39.                         </td>
    40.                     </tr>
    41.                 <?php } ?>
    42.             </table>
    43.        
    44.             <?php print $this->_tmp_ext_html_payment_end?>
    45.             <input type = "button" id = "payment_submit" class = "btn btn-primary button" name = "payment_submit" value = "<?php print _JSHOP_NEXT ?>" onclick="checkPaymentForm();" />
    46.         </form>
    47.     </div>
    48. </div>
    49.  
    50. <?php if ($payment_class){ ?>
    51. <script type="text/javascript">
    52.     showPaymentForm('<?php print $payment_class;?>');
    53. </script>
    54. <?php } ?>


    Параметр модуля в админке НЕ имеет настроек полей.

    Я еще раз повторюсь, надеюсь поймете меня)

    Таблица с параметрами и скрипт отправки:
    Код (CODE):
    1. <tr>
    2.      <td width="200">
    3.        <?php echo "Телефон";?>
    4.      </td>
    5.      <td>
    6.        <input type="text" class="inputbox" name="params[pm_debit][tele]" id="params_pm_debit_tele" value="<?php print $params['tele']?>"/>
    7.      </td>
    8.    </tr>
    9.  
    10. // А ВОТ ЭТО ПРОВЕРКА НА ЗАПОЛНЕННОСТЬ ПОЛЯ И ОТПРАВКА!!!!!!!!!!!
    11.  
    12. <script type="text/javascript">
    13.   function check_pm_debit(){
    14.     var ar_focus=new Array();
    15.     var error=0;
    16.     unhighlightField('payment_form');
    17. if (isEmpty($F_("params_pm_debit_tele"))) {
    18.         ar_focus[ar_focus.length]="params_pm_debit_tele";
    19.         error=1;
    20.     }
    21.    
    22.     if (error){
    23.         $_(ar_focus[0]).focus();
    24.         for (var i=0; i<ar_focus.length; i++ ){
    25.            highlightField(ar_focus[i]);
    26.         }
    27.         return false;
    28.     }
    29.     jQuery('#payment_form').submit();
    30.   }
    31.  </script>


    "tele" полностью выдуманный из головы параметр.
    Он ПРОВЕРЯЕТСЯ!!!
    Если продублировать все, например: tele1, tele2, tele3, tele4... То будет проверятся только 4 параметра. Если добавить пятую и следующие проверку, то ни один параметр проверятся не будет.
     

Поделиться этой страницей

Загрузка...