Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.12.2021, 15:42
Аспирант
Отправить личное сообщение для BorisJe Посмотреть профиль Найти все сообщения от BorisJe
 
Регистрация: 03.12.2021
Сообщений: 66

Заблокировать элемент button JQuery
Всем привет. По клику на кнопку все остальные кнопки в таблице button[name="Product"] должны быть заблокированы.

$(document).ready(function () {
        $('#changeBack').click(function () {
            $.ajax({
                type: 'GET',
                url: '/user/GetChange',
                success: function (result) {
                    var count = 0;
                    //var s = 'Id: ' + result.id;
                    var s = 'Спасибо за покупкку';
                    s += '<table class="table">' + '<tr><td>Ваша сдача: <td><tr>';

                    $.each(result.$values, function (index, value) {
                        s += '<tr style="border-bottom: 1px solid #000;"><td> Количество монет: ' + value.quantity + ' монет по ' + value.id + '<td><tr>';
                        count++;
                    });
                    s + '</table>';
                    $('#result3').html(s);

                    var summ = $('#total').val(0);
                    //test
                    document.querySelectorAll('.table td.price')
                        .forEach(td => {
                            const price = parseFloat(td.dataset.price);
                            const bt = td.closest('tr').querySelector('button[name="Product"]');
                            bt.disabled = false;
                        });
                    $('.table td').each(function() {
                        console.log($(this).html());
                        
                    });
                    //test
                    console.log(summ);
                }
            });
        });
    });


Вот Мой Js.

Кнопки создаются так:

@foreach (var item in Model)
                    {
                        pirce = item.Quantity > 0 ? "price" : "priceOutOfStock";
                        <tr id=pirceTr>
                            <input type="hidden" name="id" value=@item.Id />
                            @*<td><input asp-for="@item.Name" value="@item.Id" name="Product" type="radio" disabled="true"></td>*@
                            <br />
                            <td>@item.Name</td>
                            <td class=@pirce data-price=@item.Price name="price" id="price" value=@item.Price>@item.Price</td>
                            <td style="width: 10%">
                                <button name="Product" type="submit" value="@item.Id" disabled="true"><img class="center" srcset="~/images/@item.TitleImagePath" src="@Url.Action("Purchase", "User", new {item.Id})" style="width: 128px; height: 96px; vertical-align: bottom"></button>
                            </td>
                            <td>@item.Description</td>
                            <td id="quantity" class="quantity" data-quantity=@item.Quantity name="quantity">@item.Quantity</td>
                        </tr>
                    }
                </table>
Ответить с цитированием
  #2 (permalink)  
Старый 17.12.2021, 17:19
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

const bts = document.querySelectorAll('button[name="Product"]')
bts.forEach ( bt => {
   bt.addEventLisenter('click', ev => {
       bts.forEach (b => b.disabled = b !== bt)
   })
})
Ответить с цитированием
  #3 (permalink)  
Старый 18.12.2021, 02:51
Аспирант
Отправить личное сообщение для BorisJe Посмотреть профиль Найти все сообщения от BorisJe
 
Регистрация: 03.12.2021
Сообщений: 66

Сообщение от voraa Посмотреть сообщение
const bts = document.querySelectorAll('button[name="Product"]')
bts.forEach ( bt => {
   bt.addEventLisenter('click', ev => {
       bts.forEach (b => b.disabled = b !== bt)
   })
})
Выдает ошибку.
Uncaught TypeError: bt.addEventLisenter is not a function

<div class="col-md-4 col-md-offset-4">
            <fieldset>
                <legend>Сдача</legend>
                <form asp-action="GetChange" asp-controller="User"
                      method="post" enctype="multipart/form-data">
                    <input class="btn btn-info" type="button" value="Сдача" id="changeBack" />
                    <br />
                    <span id="result3"></span>
                </form>
            </fieldset>
        </div>


Вот кнопка. По ее нажатию Я вызываю ajax

$(document).ready(function () {
        $('#changeBack').click(function () {
            $.ajax({
                type: 'GET',
                url: '/user/GetChange',
                success: function (result) {
                    var count = 0;
                    //var s = 'Id: ' + result.id;
                    var s = 'Спасибо за покупкку';
                    s += '<table class="table">' + '<tr><td>Ваша сдача: <td><tr>';

                    $.each(result.$values, function (index, value) {
                        s += '<tr style="border-bottom: 1px solid #000;"><td> Количество монет: ' + value.quantity + ' монет по ' + value.id + '<td><tr>';
                        count++;
                    });
                    s + '</table>';
                    $('#result3').html(s);

                    var summ = $('#total').val(0);
                    //test
                    const bts = document.querySelectorAll('button[name="Product"]');
                    bts.forEach ( bt => {
                        bt.addEventLisenter('click', ev => {
                            bts.forEach (b => b.disabled = b !== bt);
                        });
                    });

                    //test
                    console.log(summ);
                }
            });
        });
    });

Обнуляю сумму, и в итоге человек забрал сдачу и осталось на счете 0.
Все
<td style="width: 10%">
   <button name="Product" type="submit" value="@item.Id" disabled="true"><img class="center" srcset="~/images/@item.TitleImagePath" src="@Url.Action("Purchase", "User", new {item.Id})" style="width: 128px; height: 96px; vertical-align: bottom"></button>
</td>


Должны быть снова заблокированы
Ответить с цитированием
  #4 (permalink)  
Старый 18.12.2021, 07:25
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Ну очепятался.
Могли бы и сами поправить

Только я сразу не понял. Думал, что на нажатие на одну из кнопок name="Product, остальные должны заблокироваться.

Тогда еще проще

document.querySelectorAll('button[name="Product"]').forEach (b => b.disabled = true)
Ответить с цитированием
  #5 (permalink)  
Старый 19.12.2021, 10:15
Аспирант
Отправить личное сообщение для BorisJe Посмотреть профиль Найти все сообщения от BorisJe
 
Регистрация: 03.12.2021
Сообщений: 66

Сообщение от voraa Посмотреть сообщение
Ну очепятался.
Могли бы и сами поправить

Только я сразу не понял. Думал, что на нажатие на одну из кнопок name="Product, остальные должны заблокироваться.

Тогда еще проще

document.querySelectorAll('button[name="Product"]').forEach (b => b.disabled = true)
Спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
элемент внутри кнопки button FanAizu (X)HTML/CSS 2 15.07.2014 20:44
jQuery UI Range slider как заблокировать левый ползунок по первому клику Oleg_Pupkin jQuery 3 04.09.2013 13:44
как найти в jquery элемент, который создан в цикле php Vagif jQuery 4 08.08.2013 18:17
Jquery по клику спрятать/показать элемент qwermjk jQuery 7 02.07.2010 22:02
Кодировка при использовании Ajax Nichloas AJAX и COMET 9 17.09.2009 16:06