Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] Нужна помощь в создании функции для модуля.


Recommended Posts

Вообщем есть проблема с функцией addModule();
Я начинающий разработчик PHP и яваскрипта практически не знаю. Мне необходимо реализовать модуль по типу баннера и рекомендуемых товаров. Вот код функции addModule мной немного модифицированный. Подскажите как реализовать функцию полноценно чтобы добавлялись все необходимые поля.

 

<script type="text/javascript"><!--
var module_row = <?php echo $module_row; ?>;
function addModule() {  
  html  = '<tbody id="module-row' + module_row + '">';
  html += '  <tr>';
  html += '   <td class="left"><input type="text" id="stark<?php echo $module_row; ?>"/><input type="hidden" name="stark_module[<?php echo $module_row; ?>][stark_ids][]" value="<?php echo $id; ?>" /><div id="featured-stark<?php echo $module_row; ?>" class="scrollbox">';
  
  html += '    <td class="left"><input type="text" name="stark_module[' + module_row + '][width]" value="" size="3" /> <input type="text" name="stark_module[' + module_row + '][height]" value="" size="3" /></td>';
  html += '    <td class="left"><select name="stark_module[' + module_row + '][layout_id]">';
  <?php foreach ($layouts as $layout) { ?>
  html += '      <option value="<?php echo $layout['layout_id']; ?>"><?php echo addslashes($layout['name']); ?></option>';
  <?php } ?>
  html += '    </select></td>';
  html += '    <td class="left"><select name="stark_module[' + module_row + '][position]">';
  html += '      <option value="content_top"><?php echo $text_content_top; ?></option>';
  html += '      <option value="content_bottom"><?php echo $text_content_bottom; ?></option>';
  html += '      <option value="column_left"><?php echo $text_column_left; ?></option>';
  html += '      <option value="column_right"><?php echo $text_column_right; ?></option>';
  html += '    </select></td>';
  html += '    <td class="left"><select name="stark_module[' + module_row + '][status]">';
    html += '      <option value="1" selected="selected"><?php echo $text_enabled; ?></option>';
    html += '      <option value="0"><?php echo $text_disabled; ?></option>';
    html += '    </select></td>';
  html += '    <td class="right"><input type="text" name="stark_module[' + module_row + '][sort_order]" value="" size="3" /></td>';
  html += '    <td class="left"><a onclick="$(\'#module-row' + module_row + '\').remove();" class="button"><?php echo $button_remove; ?></a></td>';
  html += '  </tr>';
  html += '</tbody>';
  
  $('#module tfoot').before(html);
  
  module_row++;
}
//--></script> 
На картинке примерно показано как работает эта функция. При нажатии "добавить модуль" появляется поле №2 без автокомплита. Как переписать функцию чтобы автокомплит заработал и сохраняло значения при выборе товара?

post-709249-0-32559500-1460109796_thumb.jpg

Надіслати
Поділитися на інших сайтах


Вот так, если делать события не все инпуты

$(document).on('click', 'my selector',  function (){  });

 

или пере вызывать плагин после добавления 

$('#module tfoot').before(html);

Надіслати
Поділитися на інших сайтах

Вы подскажите пожалуйста в какой строчке это написать, потому как я не понимаю выполнение этого кода. Т.к. повторюсь - не знаю яваскрипта. Спасибо заранее.

Надіслати
Поділитися на інших сайтах


смотрите admin\view\template\catalog\product.tpl

attributeautocomplete(attribute_row);
Надіслати
Поділитися на інших сайтах

После  $('#module tfoot').before(html); вызываем функцию attributeautocomplete она должна у Вас быть 

 

Это не трогаем, был просто пример для привязки всех элементов

$(document).on('click', 'my selector',  function (){  })

 

Надіслати
Поділитися на інших сайтах

вставил, но так и не заработал автокомплит. 

 

<script type="text/javascript"><!--


$('input#stark<?php echo $module_row; ?>').autocomplete({
  delay: 0,
  source: function(request, response) {
    $.ajax({
      url: 'index.php?route=catalog/product/autocomplete&token=<?php echo $token; ?>&filter_name=' +  encodeURIComponent(request.term),
      dataType: 'json',
      success: function(json) {   
        response($.map(json, function(item) {
          return {
            label: item.name,
            value: item.product_id
          }
        }));
      }
    });
  }, 
  select: function(event, ui) {
    //$('#featured-stark<?php echo $module_row; ?>' + ui.item.value).remove();
    
    $('#featured-stark<?php echo $module_row; ?>').append('<div id="featured-stark<?php echo $module_row; ?>' + ui.item.value + '">' + ui.item.label + '<img src="view/image/delete.png" /><input type="hidden" value="' + ui.item.value + '" name="stark_module[<?php echo $module_row; ?>][stark_ids][]" /></div>');

    $('#featured-stark<?php echo $module_row; ?> div:odd').attr('class', 'odd');
    $('#featured-stark<?php echo $module_row; ?> div:even').attr('class', 'even');
    
    //data = $.map($('#featured-stark<?php echo $module_row; ?> input'), function(element){
    //  return $(element).attr('value');
    //});
            
   // $('input[name=\'stark\']').attr('value', data.join());
          
    return false;
  },
  focus: function(event, ui) {
        return false;
    }
});

$('#featured-stark<?php echo $module_row; ?> div img').live('click', function() {
  $(this).parent().remove();
});
//--></script>

          <?php $module_row++; ?>
          <?php } ?>
          <tfoot>
            <tr>
              <td colspan="6"></td>
              <td class="left"><a onclick="addModule();" class="button"><?php echo $button_add_module; ?></a></td>
            </tr>
          </tfoot>
        </table>
      </form>
    </div>
  </div>
</div>
<script type="text/javascript"><!--
var module_row = <?php echo $module_row; ?>;
function addModule() {  
  html  = '<tbody id="module-row' + module_row + '">';
  html += '  <tr>';
  html += '   <td class="left"><input type="text" id="stark<?php echo $module_row; ?>"/><div id="featured-stark<?php echo $module_row; ?>" class="scrollbox"></div><?php $class = "odd"; ?><?php foreach ($module["names"] as $id =>  $product_name) { ?> <?php $class = ($class == "even" ? "odd" : "even"); ?><input type="hidden" name="stark_module[<?php echo $module_row; ?>][stark_ids][]" value="<?php echo $id; ?>" /><?php } ?>' ;

  html += '    <td class="left"><input type="text" name="stark_module[' + module_row + '][width]" value="" size="3" /> <input type="text" name="stark_module[' + module_row + '][height]" value="" size="3" /></td>';
  html += '    <td class="left"><select name="stark_module[' + module_row + '][layout_id]">';
  <?php foreach ($layouts as $layout) { ?>
  html += '      <option value="<?php echo $layout['layout_id']; ?>"><?php echo addslashes($layout['name']); ?></option>';
  <?php } ?>
  html += '    </select></td>';
  html += '    <td class="left"><select name="stark_module[' + module_row + '][position]">';
  html += '      <option value="content_top"><?php echo $text_content_top; ?></option>';
  html += '      <option value="content_bottom"><?php echo $text_content_bottom; ?></option>';
  html += '      <option value="column_left"><?php echo $text_column_left; ?></option>';
  html += '      <option value="column_right"><?php echo $text_column_right; ?></option>';
  html += '    </select></td>';
  html += '    <td class="left"><select name="stark_module[' + module_row + '][status]">';
    html += '      <option value="1" selected="selected"><?php echo $text_enabled; ?></option>';
    html += '      <option value="0"><?php echo $text_disabled; ?></option>';
    html += '    </select></td>';
  html += '    <td class="right"><input type="text" name="stark_module[' + module_row + '][sort_order]" value="" size="3" /></td>';
  html += '    <td class="left"><a onclick="$(\'#module-row' + module_row + '\').remove();" class="button"><?php echo $button_remove; ?></a></td>';
  html += '  </tr>';
  html += '</tbody>';
  
  $('#module tfoot').before(html);
moduleautocomplete(module_row);
  module_row++;
}
//--></script> 
Змінено користувачем afwollis
Надіслати
Поділитися на інших сайтах


пробуйте так пере вызывать

 



$('input#stark<?php echo $module_row; ?>').autocomplete(); 

Надіслати
Поділитися на інших сайтах

var modul_row = <?php echo $module_row; ?>;

$(document).on("click", "input#stark"+ modul_row +"", function (){

$(this).autocomplete({

delay: 0,

source: function(request, response) {

$.ajax({

url: 'index.php?route=catalog/product/autocomplete&token=<?php echo $token; ?>&filter_name=' + encodeURIComponent(request.term),

dataType: 'json',

success: function(json) {

response($.map(json, function(item) {

return {

label: item.name,

value: item.product_id

}

}));

}

});

},

select: function(event, ui) {

//$('#featured-stark<?php echo $module_row; ?>' + ui.item.value).remove();

$('#featured-stark<?php echo $module_row; ?>').append('<div id="featured-stark<?php echo $module_row; ?>' + ui.item.value + '">' + ui.item.label + '<img src="view/image/delete.png" /><input type="hidden" value="' + ui.item.value + '" name="stark_module[<?php echo $module_row; ?>][stark_ids][]" /></div>');

$('#featured-stark<?php echo $module_row; ?> div:odd').attr('class', 'odd');

$('#featured-stark<?php echo $module_row; ?> div:even').attr('class', 'even');

//data = $.map($('#featured-stark<?php echo $module_row; ?> input'), function(element){

// return $(element).attr('value');

//});

// $('input[name=\'stark\']').attr('value', data.join());

return false;

},

focus: function(event, ui) {

return false;

}

});

});

Змінено користувачем ArtenPitov
  • +1 1
Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.