我如何知道是否有任何行选择在我的数据表
How do I know if there are any rows selected in my datatable?
我正在使用数据表和validationEngine插件。
我的问题是,我只能知道在分页的特定页面上选择了哪些行。因此,如果我在分页的第二页上选择了行,而在第一页上没有选择行,它将显示一个错误'Please select a row'。
我读过关于它的帖子,但不是针对我的代码,所以这就是我问这个问题的原因。
所以除了我的验证代码,我应该添加以下代码,
$("#mSelector").on("click", "button[name='next'],button[name='finish']",
function() {
var $stepSelector = $(".WizardStep:visible"); // get current step
var anyError = false;
$stepSelector .find("input,textarea,select").each(function () {
if (!$(this).validationEngine('validate')) {// validate every input element inside this step
anyError = true;
}
});
if (anyError)
return false; // exit if any error found
});
});
$(function () {
var singleSelect = $('.single-select').DataTable({
'lengthMenu': ['300']
});
// Single row select
$('.single-select tbody').on('click', 'tr', function () {
if ($(this).hasClass('selected')) {
$(this).removeClass('selected');
$('#hId').val('');
} else {
singleSelect.$('tr.selected').removeClass('selected');
$(this).addClass('selected');
$('#Id').val($(this).attr('id'));
}
});
var cId = $('#hdId').val();
if (cId > 0) {
$("#grid1.single-select")
.find("[id='" + currentId + "']")
.addClass('selected');
}
//selection
var mGrid = $("#mSelector").DataTable({
'lengthMenu': ['300']
});
$('#mSelector tbody').on('click', 'tr', function () {
if ($(this).hasClass('selected')) {
$(this).removeClass('selected');
$('#mId').val('');
} else {
mGrid.$('tr.selected').removeClass('selected');
$(this).addClass('selected');
$('#mId').val($(this).attr('id'));
}
});
$("button[name='next'],button[name='finish']").click(function() {
var $step = $(".Step:visible"); // get current step
var ifError = false;
$step.find("input,textarea,select").each(function() {
if (!$(this).validationEngine('validate')) { // validate
ifError = false;
}
});
if (ifError)
return false; // exit if there is an error
});
DataTables从DOM中删除不可见的行,因为各种原因,所以当你附加一个事件处理程序时,它只适用于当前可见的元素。
<解决方案/strong>
您需要通过在on()
调用中提供选择器作为第二个参数来使用事件委托。
替换此代码:
$("button[name='next'],button[name='finish']").click(function() {
// ... skipped ...
});
$("#mSelector").on("click", "button[name='next'],button[name='finish']", function() {
// ... skipped ...
});
其中mSelector
为表ID。
来自jQuery on()
方法文档:
委托事件的优点是它们可以处理来自以后添加到文档中的后代元素。
请参阅jQuery on()
方法文档中的"直接和委托事件"和jQuery DataTables -为什么点击事件处理程序不工作获取更多信息
相关文章:
- 在php和mysql中选择选项.一旦选择了选项,就列出我的sql数据库数据
- 为什么我的上下文选择器和.buttonset()在ie中花费了这么长时间
- Angular没有根据模型更新我的选择元素
- 在我的情况下,使用带有变量失败的 jquery 选择器
- <上的applyBindings();选择>正在导致我的subscribe()起火,
- 如何在HTML表单中提交我的下拉选择
- 将用户选择的数据临时存储在我的阵列中
- gulpuncss正在过滤我的javascript所需的选择器
- 什么's导致我的<选择>框在选中时闪烁
- 当选择不同的父母时,我如何使条件形式的孩子消失并清除
- 如何将我的自定义时间选择器链接到我的asp.net
- 选择下拉列表需要在选中时显示提供商的详细信息-无法通过我的脚本显示url
- 我怎么会滥用选择器的开头
- 嗨,我正试图将我的movieprice数组从复选框值传递给另一个计算选择总数的函数,但我的代码没有;t运行
- 在我的情况下,如何选择某些孩子
- 修改jQuery脚本,让我选择页面入口的选择列表的默认值
- Xpath 不想选择我的标签
- 如何选择我的活动元素所在的 td
- 使用jQuery按值选择我的麻烦输入
- 如何在jQuery中选择我的第一个孩子