Всплывающее окно модели при выборе опции изменения в таблице

У меня есть таблица, и внутри нее у меня есть выбор

<tbody>
    @foreach($cheques as $key => $cheque)
        <tr data-id = "{{ $cheque->id }}">
            <td><a href = "#" class = "btn-detail-cheque">{{ $cheque->reference }}</a></td>
            <td>{{ $cheque->amount }}</td>
            <td>{{ $cheque->owner }}</td>
            <td>{{ $cheque->receiver }}</td>
            <td>{{ $cheque->date_entree->format('d/m/Y') }}</td>
            <td>{{ $cheque->date_payment->format('d/m/Y') }}</td>
            <td>
                <select name = "statue" class = "form-control" id = "statue">
                    <option value = "0" {{ $cheque->statue == "0" ? 'selected':'' }}>{{ __('messages.cheques.waiting') }}</option>
                    <option value = "1" {{ $cheque->statue == "1" ? 'selected':'' }}>{{ __('messages.cheques.payed') }}</option>
                    <option value = "2" {{ $cheque->statue == "2" ? 'selected':'' }}>{{ __('messages.cheques.not_payed') }}</option>
                    <option value = "3" {{ $cheque->statue == "3" ? 'selected':'' }}>{{ __('messages.cheques.transfered') }}</option>
                </select>
            </td>
            <td>
                <a href = "{{ url('/cheques/edit/'.$cheque->id) }}" class = "text-info btn-edit"><i class = "fa fa-edit"></i></a>
                <a href = "#" class = "text-danger btn-remove"><i class = "fa fa-trash-alt"></i></a>
            </td>
         </tr>
    @endforeach
</tbody>

и я хочу, когда когда-либо изменится выбранная статуя, я хочу вытолкнуть модель, и это то, что я сделал

        $("#statue").on('change', function(e){
            e.preventDefault();

            var tr = $(this).parents('tr');
            var id = $(tr).data('id');
            var statue = $(this).val();

            bootbox.confirm({
                size: "small",
                message: "{{__('messages.cheques.statue_confirmation')}}",
                buttons: {
                    confirm: {
                        label:"{{__('messages.buttons.confirm')}}",
                        className: 'btn-sm btn-danger'
                    },
                    cancel: {
                        label:"{{__('messages.buttons.cancel')}}",
                        className: 'btn-sm btn-defaul'
                    }

                },
                callback: function(result){
                    if (result){
                        if (statue == 3){
                            $("#transfer-cheque-form").find("#id").val(id);
                            $("#transfer-cheque").modal();
                        }else{
                            $.post('change-statue/'+id, {_token:$('meta[name = "csrf-token"]').attr('content'), statue:statue}, function(data){
                                if (data.success){
                                }
                            });
                        }

                    }
                }
            });
        });

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

я использую готовый шаблон, у которого есть динамическая таблица с нумерацией страниц

Вам нужно предоставить селектор для функции включения. Возможный дубликат stackoverflow.com/questions/13418963/…

Bharat Geleda 22.02.2019 16:58
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
49
3

Ответы 3

Я подозреваю, что проблема в том, что вы захватываете его по идентификатору статуи. Идентификатор должен соответствовать только одному элементу на странице (идентификатор должен быть уникальным). Что вы, вероятно, захотите сделать, так это добавить класс к вашему выбору и изменить свой селектор jquery, чтобы вместо этого выбрать этот класс.

<select name = "statue" class = "form-control" id = "statue" class = "statue-select">

$(".statue-select").on('change', function(e) {
    ...
});

спасибо что исправили проблему но только на первой странице пагинация вторая на не работает

Abdessamad Ben 22.02.2019 17:21

jQuery применяет обработчик только к тем элементам, которые существуют на странице во время выполнения этого кода. Если вы хотите, чтобы нумерация страниц работала правильно, это необходимо применять каждый раз при взаимодействии с нумерацией страниц. Другим, вероятно, более простым решением было бы переместить все в функцию javascript и установить атрибут onchange для выбора.

user1669496 22.02.2019 17:24

Во-первых, HTML DOM может содержать только один элемент с идентификатором. Ты можешь сделать :

$('select[name = "statue"]').on('change', function(e) {
    ...
});

Если ваши элементы динамически добавляются/обрабатываются, например, при разбивке на страницы ajax, вы можете сделать:

$(document).on('change', 'select[name = "statue"]', function(e) {
    ...
});

У вас не должно быть статического идентификатора в элементе выбора, вы можете решить проблему, добавив функцию для прослушивания изменения выбора.

function myFunction(event){
  //TODO
}
<select onchange = "myFunction(event)">

Другие вопросы по теме