Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не работает более 4 событий (Я нуб) (https://javascript.ru/forum/misc/67360-ne-rabotaet-bolee-4-sobytijj-ya-nub.html)

S2pidsMan 13.02.2017 09:23

Не работает более 4 событий (Я нуб)
 
Здравствуйте.
Столкнулся с такой проблемой на сайте с джумлой и компонентом джумшопинг. По данной проблеме на форумах джумлы мне к сожалению не смогли помочь, по этому обращаюсь к Гуру js.

Что бы вы поняли все в точности:
У джумшопинга, есть встроенный модуль pm_debit, он даже возможность в оплате выставлять бик, банк, ибан, имя.
Вот как выглядит оригинальный скрипт:
Код:

<?php
/**
* @version      4.4.1 10.02.2014
* @author      MAXXmarketing GmbH
* @package      Jshopping
* @copyright    Copyright (C) 2010 webdesigner-profi.de. All rights reserved.
* @license      GNU/GPL
*/
defined('_JEXEC') or die('Restricted access');
?>
<table>
  <tr>
    <td width="200">
      <?php echo _JSHOP_ACCOUNT_HOLDER;?>
    </td>
    <td>
      <input type="text" class="inputbox" name="params[pm_debit][acc_holder]" id="params_pm_debit_acc_holder" value="<?php print $params['acc_holder']?>"/>
    </td>
  </tr>
  <tr>
    <td>
      <?php echo _JSHOP_IBAN?>
    </td>
    <td>
      <input type="text" class="inputbox" name="params[pm_debit][bank_iban]" id="params_pm_debit_bank_iban" value="<?php print $params['bank_iban']?>"/>
    </td>
  </tr>
  <tr>
    <td>
      <?php echo _JSHOP_BIC_BIC?>
    </td>
    <td>
      <input type="text" class="inputbox" name="params[pm_debit][bank_bic]" id="params_pm_debit_bank_bic" value="<?php print $params['bank_bic']?>"/>
    </td>
  </tr>
  <tr>
    <td>
      <?php echo _JSHOP_BANK?>
    </td>
    <td>
      <input type="text" class="inputbox" name="params[pm_debit][bank]" id="params_pm_debit_bank" value="<?php print $params['bank']?>"/>
    </td>
  </tr>
</table>
<script type="text/javascript">
  function check_pm_debit(){
    var ar_focus=new Array();
    var error=0;
    unhighlightField('payment_form');
    if (isEmpty($F_("params_pm_debit_acc_holder"))) {
        ar_focus[ar_focus.length]="params_pm_debit_acc_holder";
        error=1;
    }
    if (isEmpty($F_("params_pm_debit_bank_iban"))) {
        ar_focus[ar_focus.length]="params_pm_debit_bank_iban";
        error=1;
    }
    if (isEmpty($F_("params_pm_debit_bank"))) {
        ar_focus[ar_focus.length]="params_pm_debit_bank";
        error=1;
    }
    if (error){
        $_(ar_focus[0]).focus();
        for (var i=0; i<ar_focus.length; i++ ){
          highlightField(ar_focus[i]);
        }
        return false;
    }
    jQuery('#payment_form').submit();
  }
 </script>

Вот этот скрипт отвечает за проверку заполняемости полей и передачу на отправку:
Код:

<script type="text/javascript">
  function check_pm_debit(){
    var ar_focus=new Array();
    var error=0;
    unhighlightField('payment_form');
    if (isEmpty($F_("params_pm_debit_acc_holder"))) {
        ar_focus[ar_focus.length]="params_pm_debit_acc_holder";
        error=1;
    }
    if (isEmpty($F_("params_pm_debit_bank_iban"))) {
        ar_focus[ar_focus.length]="params_pm_debit_bank_iban";
        error=1;
    }
    if (isEmpty($F_("params_pm_debit_bank"))) {
        ar_focus[ar_focus.length]="params_pm_debit_bank";
        error=1;
    }
    if (error){
        $_(ar_focus[0]).focus();
        for (var i=0; i<ar_focus.length; i++ ){
          highlightField(ar_focus[i]);
        }
        return false;
    }
    jQuery('#payment_form').submit();
  }
 </script>

С этим все в порядке, проблем ни каких нету.

В данном скрипте можно выводить свои дополнительные поля и их передачу. Я переписал скрипт и получилось следующее:
Код:

<?php
/**
* @version      4.4.1 10.02.2014
* @author      MAXXmarketing GmbH
* @package      Jshopping
* @copyright    Copyright (C) 2010 webdesigner-profi.de. All rights reserved.
* @license      GNU/GPL
*/
defined('_JEXEC') or die('Restricted access');
?>
<table>
  <tr>
    <td width="200">
      <?php echo _JSHOP_ACCOUNT_NAME;?>
    </td>
    <td>
      <input type="text" class="inputbox"  name="params[pm_debit][name]" id="params_pm_debit_name" value="<?php print $params['name']?>"/>
    </td>
  </tr>
 
    <tr>
    <td width="200">
      <?php echo "Юридический адрес";?>
    </td>
    <td>
      <input type="text" class="inputbox" name="params[pm_debit][faddr]" id="params_pm_debit_faddr" value="<?php print $params['faddr']?>"/>
    </td>
  </tr>
 
  <tr>
    <td width="200">
      <?php echo "Фактический адрес";?>
    </td>
    <td>
      <input type="text" class="inputbox" name="params[pm_debit][addr]" id="params_pm_debit_addr" value="<?php print $params['addr']?>"/>
    </td>
  </tr>
 
 
  <tr>
    <td width="200">
      <?php echo "ИНН/КПП";?>
    </td>
    <td>
      <input type="text" class="inputbox" name="params[pm_debit][inn]" id="params_pm_debit_inn" value="<?php print $params['inn']?>"/>
    </td>
  </tr>
 
 
  <tr>
    <td width="200">
      <?php echo "ОКПО";?>
    </td>
    <td>
      <input type="text" class="inputbox" name="params[pm_debit][okpo]" id="params_pm_debit_okpo" value="<?php print $params['okpo']?>"/>
    </td>
  </tr>
 
  <tr>
    <td width="200">
      <?php echo "Наименования банка";?>
    </td>
    <td>
      <input type="text" class="inputbox" name="params[pm_debit][nazb]" id="params_pm_debit_nazb" value="<?php print $params['nazb']?>"/>
    </td>
  </tr>
  <tr>
    <td width="200">
      <?php echo "БИК";?>
    </td>
    <td>
      <input type="text" class="inputbox" name="params[pm_debit][bik]" id="params_pm_debit_bik" value="<?php print $params['bik']?>"/>
    </td>
  </tr>
  <tr>
    <td width="200">
      <?php echo "Р/С";?>
    </td>
    <td>
      <input type="text" class="inputbox" name="params[pm_debit][ras]" id="params_pm_debit_ras" value="<?php print $params['ras']?>"/>
    </td>
  </tr>
  <tr>
    <td width="200">
      <?php echo "К/С";?>
    </td>
    <td>
      <input type="text" class="inputbox" name="params[pm_debit][ks]" id="params_pm_debit_ks" value="<?php print $params['ks']?>"/>
    </td>
  </tr>
  <tr>
    <td width="200">
      <?php echo "Ген. директор";?>
    </td>
    <td>
      <input type="text" class="inputbox" name="params[pm_debit][gend]" id="params_pm_debit_gend" value="<?php print $params['gend']?>"/>
    </td>
  </tr>
  <tr>
    <td width="200">
      <?php echo "Телефон";?>
    </td>
    <td>
      <input type="text" class="inputbox" name="params[pm_debit][tele]" id="params_pm_debit_tele" value="<?php print $params['tele']?>"/>
    </td>
  </tr>
</table>
<script type="text/javascript">
  function check_pm_debit(){
    var ar_focus=new Array();
    var error=0;
    unhighlightField('payment_form');
        if (isEmpty($F_("params_pm_debit_name"))) {
        ar_focus[ar_focus.length]="params_pm_debit_name";
        error=1;
    }
        if (isEmpty($F_("params_pm_debit_addr"))) {
        ar_focus[ar_focus.length]="params_pm_debit_addr";
        error=1;
    }
        if (isEmpty($F_("params_pm_debit_faddr"))) {
        ar_focus[ar_focus.length]="params_pm_debit_faddr";
        error=1;
    }
        if (isEmpty($F_("params_pm_debit_inn"))) {
        ar_focus[ar_focus.length]="params_pm_debit_inn";
        error=1;
    }
        if (isEmpty($F_("params_pm_debit_okpo"))) {
        ar_focus[ar_focus.length]="params_pm_debit_okpo";
        error=1;
    }
        if (isEmpty($F_("params_pm_debit_nazbe"))) {
        ar_focus[ar_focus.length]="params_pm_debit_nazb";
        error=1;
    }
        if (isEmpty($F_("params_pm_debit_ras"))) {
        ar_focus[ar_focus.length]="params_pm_debit_ras";
        error=1;
    }
        if (isEmpty($F_("params_pm_debit_ks"))) {
        ar_focus[ar_focus.length]="params_pm_debit_ks";
        error=1;
    }
        if (isEmpty($F_("params_pm_debit_bik"))) {
        ar_focus[ar_focus.length]="params_pm_debit_bik";
        error=1;
    }
        if (isEmpty($F_("params_pm_debit_gend"))) {
        ar_focus[ar_focus.length]="params_pm_debit_gend";
        error=1;
    }
        if (isEmpty($F_("params_pm_debit_tele"))) {
        ar_focus[ar_focus.length]="params_pm_debit_tele";
        error=1;
    }
       
    if (error){
        $_(ar_focus[0]).focus();
        for (var i=0; i<ar_focus.length; i++ ){
          highlightField(ar_focus[i]);
        }
        return false;
    }
    jQuery('#payment_form').submit();
  }
 </script>

В моем варианте - все отправляется и передается как мне и нужно. НО!!! появилась проблемы проверки заполняемости форм.
Если оставить допустим 4 проверки, любого поля:
Код:

<script type="text/javascript">
  function check_pm_debit(){
    var ar_focus=new Array();
    var error=0;
    unhighlightField('payment_form');
        if (isEmpty($F_("params_pm_debit_ks"))) {
        ar_focus[ar_focus.length]="params_pm_debit_ks";
        error=1;
    }
        if (isEmpty($F_("params_pm_debit_bik"))) {
        ar_focus[ar_focus.length]="params_pm_debit_bik";
        error=1;
    }
        if (isEmpty($F_("params_pm_debit_gend"))) {
        ar_focus[ar_focus.length]="params_pm_debit_gend";
        error=1;
    }
        if (isEmpty($F_("params_pm_debit_tele"))) {
        ar_focus[ar_focus.length]="params_pm_debit_tele";
        error=1;
    }
       
    if (error){
        $_(ar_focus[0]).focus();
        for (var i=0; i<ar_focus.length; i++ ){
          highlightField(ar_focus[i]);
        }
        return false;
    }
    jQuery('#payment_form').submit();
  }
 </script>

То эти 4 поля проверяются и в случае не заполнения - появляется error.
Но если добавить ПЯТУЮ проверку и последующие, то ни одна проверка не срабатывает.

Помогите пожалуйста исправить проблему.

рони 13.02.2017 09:54

Цитата:

Сообщение от S2pidsMan
Но если добавить ПЯТУЮ проверку и последующие, то ни одна проверка не срабатывает.

что это за проверки? и можно без php, но живой макет

S2pidsMan 13.02.2017 09:57

function check_pm_debit(){
    var ar_focus=new Array();
    var error=0;
    unhighlightField('payment_form');
	if (isEmpty($F_("params_pm_debit_ks"))) {
        ar_focus[ar_focus.length]="params_pm_debit_ks";
        error=1;
    }
	if (isEmpty($F_("params_pm_debit_bik"))) {
        ar_focus[ar_focus.length]="params_pm_debit_bik";
        error=1;
    }
	if (isEmpty($F_("params_pm_debit_gend"))) {
        ar_focus[ar_focus.length]="params_pm_debit_gend";
        error=1;
    }
	if (isEmpty($F_("params_pm_debit_tele"))) {
        ar_focus[ar_focus.length]="params_pm_debit_tele";
        error=1;
    }
	
    if (error){
        $_(ar_focus[0]).focus();
        for (var i=0; i<ar_focus.length; i++ ){
           highlightField(ar_focus[i]);
        }
        return false;
    }
    jQuery('#payment_form').submit();
  }

Вот скрипт проверки заполненности поля и передача в форму.
Вот так 4 работает, а если добавить допустим
function check_pm_debit(){
    var ar_focus=new Array();
    var error=0;
    unhighlightField('payment_form');
	if (isEmpty($F_("params_pm_debit_ks"))) {
        ar_focus[ar_focus.length]="params_pm_debit_ks";
        error=1;
    }
	if (isEmpty($F_("params_pm_debit_bik"))) {
        ar_focus[ar_focus.length]="params_pm_debit_bik";
        error=1;
    }
	if (isEmpty($F_("params_pm_debit_gend"))) {
        ar_focus[ar_focus.length]="params_pm_debit_gend";
        error=1;
    }
        if (isEmpty($F_("params_pm_debit_gender"))) {
        ar_focus[ar_focus.length]="params_pm_debit_gender";
        error=1;
    }
	if (isEmpty($F_("params_pm_debit_tele"))) {
        ar_focus[ar_focus.length]="params_pm_debit_tele";
        error=1;
    }
	
    if (error){
        $_(ar_focus[0]).focus();
        for (var i=0; i<ar_focus.length; i++ ){
           highlightField(ar_focus[i]);
        }
        return false;
    }
    jQuery('#payment_form').submit();
  }

То уже ни одна проверка не срабатывает

рони 13.02.2017 10:02

S2pidsMan,
и что консоль пишет?

S2pidsMan 13.02.2017 10:08

Ничего. Просто пусто. Данные все отправляются без каких либо варингов

рони 13.02.2017 10:12

S2pidsMan,
ссылку на пример можно в личку

рони 13.02.2017 10:52

Цитата:

Сообщение от S2pidsMan
if (isEmpty($F_("params_pm_debit_nazbe"))) {
ar_focus[ar_focus.length]="params_pm_debit_nazb";
error=1;
}

:-?

S2pidsMan 13.02.2017 11:05

Цитата:

Сообщение от рони (Сообщение 444168)
:-?

СПАСИБО БОЛЬШОЕ!!!!!!!! ВОТ Я ИДИОТ))))


Часовой пояс GMT +3, время: 10:27.