Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » jQuery » Как сократить js скрипт?

Как сократить js скрипт?


     14.09.2020    jQuery, Ламерские вопросы    997

вопрос
Всем доброго времени суток. У меня при добавлении новости доп. поля скрыты js скриптом:



Но мне нужно скрывать их только если поле не заполнено, выглядит это так:



И так с каждым полем, их очень много. Есть возможность каким то образом это сделать более сжатым, иначе будет 59 таких if. Заранее спасибо за помощь.

Ответил: LazyDev


<script>
$(function () {
    const arrayXFid = ['ingredient-1', 'poshagovoe-1'];
    $('[id*=xf_ingredient], [id*=xf_poshagovoe], [id*=xf_opisanie]').each(function(i, e) {
        let name = $(this).prop('id');
        name = name.replace(/xf_/gi, '');
        if (!arrayXFid.includes(name)) {
            $(this).val().toString().trim() !== '' || $('#' + name).hide();
        }
    });
});
</script>

10 комментариев

TeraMoune
Эксперт

TeraMoune - 15 сентября 2020 04:46 -


$('input[name^="xfield"]').each(function( index, obj ) {
 
    if( !$(obj).val() ) $(obj).hide();
     
});

Тестовый репозиторий установки плагинов: teramoune

ushkom
Юзер

ushkom - 15 сентября 2020 16:51 -

Спасибо за отклик. Не совсем понял, вместо name указать ingredient? Если так, данный код будет скрывать все поля ingredient, а мне ingredient-1 не нужно скрывать. Или я неправильно понял?

LazyDev
PHP-developer

LazyDev - 15 сентября 2020 18:33 -

ushkom,
<script>
$(function () {
    $('[id*=xf_ingredient], [id*=xf_poshagovoe], [id*=xf_opisanie]').each(function(i, e) {
        let name = $(this).prop('id');
        name.replace('xf_');
        $(this).val().toString().trim() !== '' || $('#' + name).hide();
    });
});
</script>

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

ushkom
Юзер

ushkom - 15 сентября 2020 20:12 -

LazyDev, спасибо что откликнулись, и спасибо Вам за модули. Скрипт не совсем корректно работает. hide нужно применять не к id xf_ingredient-* а к id ingredient-*, id poshagovoe-*, id opisanie-2 и из цикла нужно исключить id ingredient-1 и id poshagovoe-1
Спасибо за помощь.

LazyDev
PHP-developer

LazyDev - 15 сентября 2020 20:13 -

ushkom, в скрипте именно так и сделано.

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

ushkom
Юзер

ushkom - 15 сентября 2020 20:19 -

К сожалению применяется к id xf_ingredient-*
https://prnt.sc/uhtc4p
Получается не срабатывает name.replace('xf_');

ushkom
Юзер

ushkom - 15 сентября 2020 20:50 -

Пробовал и так: name.replace('xf_',''); Все равно не удаляет xf_

LazyDev
PHP-developer

LazyDev - 15 сентября 2020 23:26 -

Цитата: ushkom
name.replace('xf_');

name = name.replace(/xf_/gi, '');

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

ushkom
Юзер

ushkom - 15 сентября 2020 23:57 -

Спасибо большое, с небольшими правками все работает. Вы как всегда на высоте.

LazyDev
PHP-developer

LazyDev - 16 сентября 2020 00:03 -

ushkom, дополнил в ответе

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх