У меня есть таблица, которая привязана к JQuery datatable.
<table id="grid1">
<thead>
<tr>
<th>Name</th>
<th>View</th>
<th>Modify</th>
</tr>
</thead>
</table>
Ниже приведен код javascript для привязки таблицы /grid-
function grid1_LoadData() {
grid1.fnDestroy();
grid1.dataTable({
"sScrollY": "200px",
"bStateSave": true,
'bDeferRender': true,
'sAjaxSource': '/controller/GetData,
'aoColumns': [
{ 'mDataProp': 'Name' },
{ 'mDataProp': 'View', "sWidth": "55%", sType: 'bool', bSearchable: false, bSortable: false, mData: 'View',
"mRender": function (data, type, full) {
return "<input class=\"enabledbool\" name=\"CanView" + full.ID + "\" type=\"checkbox\" " + (data ? " checked=\"true\"" : "") + "/>";
}
},
{ 'mDataProp': 'Modify', "sWidth": "65%", sType: 'bool', bSearchable: false, bSortable: false, mData: 'Modify', "mRender": function (data, type, full) {
// console.log(data);
return "<input class=\"enabledbool\" name=\"CanModify" + full.ID + "\" type=\"checkbox\" " + (data ? " checked=\"true\"" : "") + "/>";
}
},
]
});
}
Прежде чем сохранять данные сетки/таблицы, я хочу проверить, что флажок " View
или Modify
отмечен. Мне нужно написать функцию проверки javascript.
Это то, что у меня есть tried-
function Validate() {
$(grid1.fnGetData()).each(function () {
if ($(.checkbox).is(':checked')) {
return true;
}
else {
return false;
}
});
}
Ожидание ценных предложений.
ОБНОВЛЕНИЯ В итоге я использовал нижеследующую функцию javascript для проверки валидации -
function Validate() {
var allOk = true;
$(grid1).find("tbody tr").each(function (){
var row = $(this);
if (!row.Modify && !row.View) {
allOk = false;
}
});
return allOk; // Make 'Validate' return true only if all rows validate.
}
То, что я пытался сделать, это если Modify
и View
не отмечены, а затем верните false
. Когда я проверил с $(gridProfiles.fnGetData()).each(function()
вместо $(grid1).find("tbody tr").each(function()
, все было нормально, но строки сетки добавляются динамически, последние добавленные строки не будут отображаться при использовании $(gridProfiles.fnGetData()).each(function()
. Любое решение?
Это отлично работает для меня -
function Validate() {
var allOk = true;
$(grid1).find("tbody tr").each(function () {
var row = $(this);
if (row.find($(':checkbox:not(:checked)')).length == 2) {
allOk = false;
return allOk;
}
});
return allOk;
}
Ваша функция, на мой взгляд, почти хорошая. Вы сделали одну ошибку в каждой функции, я бы исправил эту функцию:
function Validate() {
$(grid1.fnGetData()).each(function () {
if (this.is(':checkbox :checked')) {
return true;
}
});
return false;
}
Главное изменение заключается в том, чтобы перемещать возвратную ложную инструкцию из каждого цикла. В вашей версии этот цикл всегда имел бы только одну итерацию. В моей версии он будет итерации, пока не будет найден установленный флажок. Если флажок не установлен, установите флажок false. У меня нет компилятора в моей голове, так жаль ошибок.
Microsoft JScript runtime error: Object doesn't support property or method 'is'
в IE
вы должны добавить временную переменную var, такую как oneIsSet = false, и изменить значение, если оно отмечено.
function Validate() {
var allValid = true;
$(grid1).find("tbody tr").each(function () {
var row = $(this);
var thisOneValid = false;
if (row.find('input[type="checkbox"]:checked').size() > 0)
thisOneValid = true;
if (! thisOneValid)
allValid = false;
});
return allValid;
}
Измените class name
на enabledbool из флажка
function Validate() {
var flag=0;
$(grid1.fnGetData()).each(function () {
if ($(this).find('.enabledbool').is(':checked')) {
flag++;
}
});
return flag ? true : false;// return here
}