Как получить проверенное значение в массиве из моего ввода в ajax - PullRequest
0 голосов
/ 06 февраля 2020

я пытаюсь получить проверенное входное значение из моего ajax, но он возвращает только мой первый тик ... вот мой код

function getBranchAjax(cuid, stid) {
    $.ajaxSetup({
        headers: {
            'X-CSRF-Token': $('meta[name=csrf-token]').attr('content')
        }
    });
    $.ajax({
        url: "{{ route('reporting.getBranchAjax',['cuid','stid']) }}",
        method: 'GET',
        data: { cuid: cuid, stid: stid },
        dataType: 'json',
        success: function (data) {

            console.log(data);
            console.log(data.branch.length);


            //remove all option except the first option the append with new option
            //remove all option except the first option the append with new option
            for (var x = 0; x < data.branch.length; x++) {
                //console.log(data.branch[x].cb_branch_Name);
                $('#brRecord').append(`<tr><td style='width: 110px; text-align: left;'>${data.branch[x].cb_branchcode}
    </td><td style='width: 600px; text-align: left;'>${data.branch[x].cb_branch_Name}</td>
     <td style='width: 20px;'> 
    <input type="checkbox" class="ss" name="ss" id="ss" value="${data.branch[x].cb_branch_Name}" /></td><td>

                                    </td></tr>`);

            }


        },
        fail: function (xhr, textStatus, errorThrown) {
            alert('request failed');
        }
    })
}

Получить значение по имени класса, которое является только возвращаемым значением мой первый тик

var checkedValue = null; 
var inputElements = document.getElementsByClassName('ss');
for(var i=0; inputElements[i]; ++i){
    if(inputElements[i].checked){
        checkedValue = inputElements[i].value;
        break;
    }
}

console.log(checkedValue); // only return a value of my first tick

Я ожидаю получить большее значение на основе моего входного значения тика

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Несколько значений необходимо будет хранить в массиве (или аналогичном).

Например:

var checkedValues = Array.from(document.getElementsByClassName('ss')).filter(el => el.checked).map(el => el.value);

console.log(checkedValues);

Или, поскольку вопрос помечен jQuery:

var checkedValues = jQuery('.ss:checked').get().map(el => el.value);

console.log(checkedValues);

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

0 голосов
/ 06 февраля 2020

Это потому, что вы добавляете паузу в вашем для l oop.

Удаление этого решит вашу проблему.

for(var i=0; inputElements[i]; ++i){
        if(inputElements[i].checked){
            checkedValue = inputElements[i].value;
        }
    }

Если вы хотите, чтобы все последние кликнули флажок Вы можете использовать onChange

function checkedInput() 
{
 cosnt checkedValue = [];
 for(var i=0; inputElements[i]; ++i){
        if(inputElements[i].checked){
            checkedValue.push(inputElements[i].value);
        }
    }
  return checkedValue ;

}

$(document).on('change', '#ss', function () {
 console.log(checkedInput());
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...