Когда нажимается кнопка редактирования или удаления строки, я хочу сохранить идентификатор учащегося вместе с проверенным типом, т. е. типом редактирования или удаления, а затем использовать его для обновления данных в базе данных. В настоящее время я написал html и jquery, чтобы установить флажок при нажатии соответствующей кнопки. Теперь я застрял в том, как хранить данные в массиве и передавать их вперед. Данные должны быть в виде stdList(id = 1, check = 'edit').

Вот мой html

<div class="alert alert-danger" role="alert"></div>
<table class="table table-bordered table-striped">
<thead>
    <tr>
        <th>Checklist</th>
        <th>Id</th>
        <th>Student Name</th>
        <th>Address</th>
        <th>Phone</th>
        <th>Class</th>
        <th colspan="2">Actions</th>
    </tr>
</thead>
<tbody>
    <tr>
        <td>
            <input type="checkbox" id="editCheck" class="editCheck" />
            <input type="checkbox" id="deleteCheck" class="deleteCheck" />
        </td>
        <td>1</td>
        <td>
            <input type="text" class="form-control item" readonly="readonly" />
        </td>
        <td>
            <input type="text" class="form-control item" readonly="readonly" />
        </td>
        <td>
            <input type="text" class="form-control item" readonly="readonly" />
        </td>
        <td>12</td>
        <td>
            <button type="button" class="btn btn-info btn-xs" id="btn1">Edit</button>
        </td>
        <td>
            <button type="button" class="btn btn-danger btn-xs" id="dbtn1">Delete</button>
        </td>
    </tr>
    <tr>
        <td>
            <input type="checkbox" id="editCheck" class="btn2" />
            <input type="checkbox" id="deleteCheck" />
        </td>
        <td>1</td>
        <td>
            <input type="text" class="form-control item" readonly="readonly" />
        </td>
        <td>
            <input type="text" class="form-control item" readonly="readonly" />
        </td>
        <td>
            <input type="text" class="form-control item" readonly="readonly" />
        </td>
        <td>12</td>
        <td>
            <button type="button" class="btn btn-info btn-xs" id="btn2">Edit</button>
        </td>
        <td>
            <button type="button" class="btn btn-danger btn-xs" id="dbtn2">Delete</button>
        </td>
    </tr>
</tbody>

Вот jquery

$('.btn.btn-info.btn-xs').click(function () {

    var $tr = $(this).closest('tr')
    $tr.find('input:checkbox').first().prop('checked', 'true');

    $tr.find('input').removeAttr('readonly');
    check($tr);
});

$('.btn.btn-danger.btn-xs').click(function () {
    var $tr = $(this).closest('tr');
    $tr.find('input:checkbox').last().prop('checked', 'true');
    check($tr);
});

function check($tr) {

    if (($tr.find('input:checkbox').first().is(":checked")) && ($tr.find('input:checkbox').last().is(":checked"))) {
        $('.alert.alert-danger').append('<p>You can not edit and update the field at once</p>');
    }

}
0
user3127109 15 Июл 2015 в 13:53

2 ответа

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

Create a object  like below .

var item=new Object();
item.studentId = "student id";
item.Action="edit/delete action"

Create an array to save this 
var studentInfo = new Array();

then Add items to array,

studentInfo.push(item);

Use the Array as required in you code
0
Midhun Murali 15 Июл 2015 в 14:00

Сначала вы можете установить идентификатор в атрибуте данных элемента tr строки таблицы. Также добавьте значение в флажки, которые можно использовать в массиве/объекте.

<tr data-id="1">
    <td>
        <input type="checkbox" id="editCheck" class="editCheck" value="edit" />
         <input type="checkbox" id="deleteCheck" class="deleteCheck" value="delete" />
         ...

Я немного упростил функцию check, подсчитав отмеченные флажки (с помощью length). Со значением и атрибутом данных легко создать объект JSON, который, в отличие от массивов, имеет пары ключ-значение.

function check($tr) {
    var $checked = $tr.find('input:checked');
    var data = {};
    if ($checked.length > 1) {
        $('.alert.alert-danger').append('<p>You can not edit and update the field at once</p>');
        return false;
    }

    data.id = $tr.data('id');
    data.check = $checked.val();

    console.log(data); // Gives something like {id: 1, check: 'edit'}

}
0
jazZRo 15 Июл 2015 в 14:45