我试图使用可编辑(x-editable)扩展用几个可编辑字段填充引导表。这些字段是从url中拉入的。在服务器端,我们运行一些验证检查,并传回包含错误的字段数组。
如何使用可编辑插件在页面加载时显示这些错误?因此,在页面加载的第二天,用户可以识别哪些数据不正确。
参见示例:JSFiddle
超文本标记语言
<table id="table">
</table>
Javascript
var data = [
{
"name": "bootstrap-table",
"stargazers_count": "526",
"forks_count": "122",
"description": "An extended Bootstrap table with radio, checkbox, sort, pagination, and other added features. (supports twitter bootstrap v2 and v3) ",
"errors": "{'name','stargazers_count','forks_count'}"
},
{
"name": "multiple-select",
"stargazers_count": "288",
"forks_count": "150",
"description": "A jQuery plugin to select multiple elements with checkboxes :)",
"errors": "{}"
},
{
"name": "bootstrap-show-password",
"stargazers_count": "32",
"forks_count": "11",
"description": "Show/hide password plugin for twitter bootstrap.",
"errors": "{'forks_count'}"
},
{
"name": "blog",
"stargazers_count": "13",
"forks_count": "4",
"description": "my blog",
"errors": "{'stargazers_count', 'name'}"
},
{
"name": "scutech-redmine",
"stargazers_count": "6",
"forks_count": "3",
"description": "Redmine notification tools for chrome extension.",
"errors": "{}"
}
];
$(function () {
$('#table').bootstrapTable({
columns: [
{
field: 'name',
title: 'Name',
editable: {
type: 'text'
}
},{
field: 'stargazers_count',
title: 'Stars',
editable: {
type: 'text'
}
},{
field: 'forks_count',
title: 'Forks',
editable: {
type: 'text'
}
},{
field: 'errors',
title: 'Errors',
}
],
data: data
});
});
让我再举一个例子来说明我在做什么。假设值“newName”已保存到数据库中的“name”字段中。当我们转到显示所有用户名的引导表的页面时,值为“newName”的引导表将以红色突出显示,并且错误消息会显示类似“error:newName无效,请更改”。
我知道有人会问我们为什么不验证save上的数据。在这种情况下,允许用户输入通常无法通过验证检查的错误数据(将其视为草稿数据),这是从不同的网页完成的。然后,在稍后的时间,比如说下次登录,他们决定他们已经完成了对草稿数据的处理并准备提交它。用户将单击“提交”按钮,并被带到此页面,要求查看和更正其数据。
引导表确实提供了格式化器选项,但这似乎不适用于可编辑扩展(查看https://github.com/wenzhixin/bootstrap-table/blob/develop/src/extensions/editable/bootstrap-table-editable.js#L65了解更多详细信息)。
仍然可以,首先为列设置格式化程序,然后在post body事件中脚本可以更新表。搜索“cfa”以查看代码段中的新增内容。
/* begin cfa */
function errorFormatter(value, row, index) {
var thisCellValue = value;
var thisRowData = row;
var thisRowErrorsString = thisRowData.errors;
for (var aKey in thisRowData) {
if (thisRowData[aKey] == thisCellValue) {
if (thisRowErrorsString.indexOf(aKey) != -1) {
return value + ' has_errors';
}
}
}
return thisCellValue;
};
/* end cfa */
var data = [{
"name": "bootstrap-table",
"stargazers_count": "526",
"forks_count": "122",
"description": "An extended Bootstrap table with radio, checkbox, sort, pagination, and other added features. (supports twitter bootstrap v2 and v3) ",
"errors": "{'name','stargazers_count','forks_count'}"
}, {
"name": "multiple-select",
"stargazers_count": "288",
"forks_count": "150",
"description": "A jQuery plugin to select multiple elements with checkboxes :)",
"errors": "{}"
}, {
"name": "bootstrap-show-password",
"stargazers_count": "32",
"forks_count": "11",
"description": "Show/hide password plugin for twitter bootstrap.",
"errors": "{'forks_count'}"
}, {
"name": "blog",
"stargazers_count": "13",
"forks_count": "4",
"description": "my blog",
"errors": "{'stargazers_count', 'name'}"
}, {
"name": "scutech-redmine",
"stargazers_count": "6",
"forks_count": "3",
"description": "Redmine notification tools for chrome extension.",
"errors": "{}"
}];
$(function() {
$('#table').bootstrapTable({
/* begin cfa */
onPostBody: function() {
$('[data-value!=""]').each(function(each_element) {
var thisElement = this;
var thisElementDataValue = $(thisElement).data('value') + " ";
if (thisElementDataValue != null && thisElementDataValue.indexOf("has_errors") != -1) {
$(thisElement).data('value', thisElementDataValue.substring(0, thisElementDataValue.indexOf("has_errors")));
$(thisElement).text(thisElementDataValue.replace('has_errors', 'is invalid'));
$(thisElement).css("color", "red");
}
});
},
/* end cfa */
columns: [{
field: 'name',
title: 'Name',
editable: {
type: 'text'
},
formatter: errorFormatter, /* cfa */
}, {
field: 'stargazers_count',
title: 'Stars',
editable: {
type: 'text'
},
formatter: errorFormatter, /* cfa */
}, {
field: 'forks_count',
title: 'Forks',
editable: {
type: 'text'
},
formatter: errorFormatter, /* cfa */
}, {
field: 'errors',
title: 'Errors',
}],
data: data
});
});
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
<link href="https://rawgit.com/wenzhixin/bootstrap-table/master/src/bootstrap-table.css" rel="stylesheet" />
<link href="https://rawgit.com/vitalets/x-editable/master/dist/bootstrap3-editable/css/bootstrap-editable.css" rel="stylesheet" />
<table id="table">
</table>
<hr>
<div>
If the field name in bootstrapTable is equal to one of the items passed in the error array for that row, then highlight the appropriate cell in that row RED and display message "Error: (print value for that cell) is invalid". When a user clicks on the
item to edit it, they should still see the original text with a validation error asking them to change it.
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src="https://rawgit.com/wenzhixin/bootstrap-table/master/src/bootstrap-table.js"></script>
<script src="https://rawgit.com/vitalets/x-editable/master/dist/bootstrap3-editable/js/bootstrap-editable.js"></script>
<script src="https://rawgit.com/wenzhixin/bootstrap-table/master/src/extensions/editable/bootstrap-table-editable.js"></script>
我在使用搜索文本时遇到了一个问题,而其中的一列是select类型的。 这个小提琴解释了这个场景: http://jsfiddle.net/eitanmg/fdg3kaws/ 当搜索“在线”时,它会显示0个结果。当搜索“1”时,它会显示在线结果。 因为当搜索“1”时,“在线”值后面的选择数据的值键。 但是,我如何制作表格来搜索文本而不是它们的值呢?
我如何可以显示一个加载GIF图像或Qtag更新,而我加载数据从数据库与QAbstractTableModel.我是新的pyqt5,我尝试了从上周,但不明白我怎么能做到这一点。 我在stackoverflow中找到了很多例子,但我确实无法处理Qthread。我不想为它使用计时器,因为我可以在许多示例中看到正在使用qtimer。在表中加载完成时,加载gif将自动关闭。谁能告诉我怎么做,并描述所有的事情
大家好,所以我无法将此API中的数据显示到Vue引导表中。 这给了我一个错误:“属性或方法“products”未在实例上定义,但在呈现期间被引用。请通过初始化属性,确保此属性在数据选项或基于类的组件中是被动的。” 问题出在我的应用程序中。vue I已在实例上定义了产品。所以我不明白为什么它会给我这个错误。 这是我的应用程序。vue 分页组件 如果有人能帮助我或指导我,那将是非常感谢的
它可以工作,但我想知道它访问mongo的确切查询 怎么做? 我尝试在以下属性中添加一些配置: 也不工作。 有人能帮忙吗?
问题内容: 您好朋友,我想在特定的div加载数据之前向Ajax加载器显示,但问题是数据在同一页面上动态传输,但是我的脚本从另一个文件调用数据, 请参见下面的代码 脚本 的HTML 它的工作正常,但我想在同一页面中加载数据,请帮助我 提前致谢 .... 编辑 我想说明之前加载数据装载到 问题答案: 您可以尝试使用以下html- 和脚本-
我用bootstrap创建了一个网站。我有一个引导表,它最初是从include php代码加载的。这工作正常,没有问题。 之后,我有一个按钮,当它被点击时,它打开了一个窗口模式,以选择不同的参数发送查询。我使用jQuery与ajax POST变量到另一个php,我得到一个json对象如下: 问题是我不能用这个数组加载引导表。 我在网上和这里读了很多。我尝试过创建一个小引导表和小查询来丢弃代码减法中