如何允许在jqGrid中使用区分大小写的行ID

如何允许在jqGrid中使用区分大小写的行ID,jqgrid,Jqgrid,如果jqGrid行id(作为服务器中json数据的单独id属性传递)仅在大小写上不同,则内联编辑不会正确启动: 双击第二行将第一行置于内联编辑模式。 如何使jqgrid行ID区分大小写 从服务器读取的数据是: {"total":1,"page":1,"records":2,"rows":[ {"id":"arvelduste_20seis","cell":[null,"arvelduste seis"]}, {"id":"Arvelduste_20seis","cell":[null,"Arv

如果jqGrid行id(作为服务器中json数据的单独id属性传递)仅在大小写上不同,则内联编辑不会正确启动:

双击第二行将第一行置于内联编辑模式。 如何使jqgrid行ID区分大小写

从服务器读取的数据是:

{"total":1,"page":1,"records":2,"rows":[

{"id":"arvelduste_20seis","cell":[null,"arvelduste seis"]},
{"id":"Arvelduste_20seis","cell":[null,"Arvelduste seis"]}

]}

对我来说,这似乎是Internet Explorer中的一个bug。在官方文档对象模型HTML标准中,我可以找到关于jqGrid广泛使用的
namedItem
方法的描述:

此方法使用名称检索节点。使用[HTML 4.01]文档, 它首先搜索具有匹配id属性的节点。如果是 如果找不到,则会搜索具有匹配名称的节点 属性,但仅在允许使用名称的元素上 属性对于[XHTML1.0]文档,此方法仅搜索 具有匹配id属性的节点。此方法在中不区分大小写 HTML文档和XHTML文档中区分大小写的文档

因此,
namedItem
方法在XHTML文档中应区分大小写。另一方面,就像您可以在中测试一样,它只使用纯DOM而不使用jQuery或jqGrid,该方法在Internet Explorer中不区分大小写

演示的HTML代码如下所示:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>http://stackoverflow.com/questions/7230179/how-to-allow-to-use-case-sensitive-row-ids-in-jqgrid/7236985#7236985</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
    <table id="t">
        <tbody>
            <tr id="x"><td>1</td></tr>
            <tr id="X"><td>2</td></tr>
        </tbody>
    </table>
    <script type="text/javascript">
        'use strict';
        var mytable = document.getElementById("t"),
            tr1 = mytable.rows.namedItem("x"),
            tr2 = mytable.rows.namedItem("X"),
            tr3 = document.getElementById("x"),
            tr4 = document.getElementById("X");
        alert("getElementById works " + (tr3.id === tr4.id ? "case insensitive (BUG!!!)": "case sensitive") +
              "\nnamedItem works " + (tr1.id === tr2.id ? "case insensitive (BUG!!!)": "case sensitive"));
    </script>
</body>
</html>

http://stackoverflow.com/questions/7230179/how-to-allow-to-use-case-sensitive-row-ids-in-jqgrid/7236985#7236985
1.
2.
"严格使用",;
var mytable=document.getElementById(“t”),
tr1=mytable.rows.namedItem(“x”),
tr2=mytable.rows.namedItem(“X”),
tr3=document.getElementById(“x”),
tr4=document.getElementById(“X”);
警报(“getElementById工作”+(tr3.id==tr4.id?“不区分大小写(BUG!!!)”:“区分大小写”)+
“\nnamedItem工作”+(tr1.id==tr2.id?“不区分大小写(BUG!!!)”:“区分大小写”);
Internet Explorer显示
namedItem(“X”)
返回id=“X”的行,而不是id=“X”的行。在我测试过的所有其他(非Microsoft)web浏览器中都不存在相同的bug

我不能建议你目前没有解决办法。您应该只组织您的程序,这样您就不会在表(以及jqGrid)中使用区分大小写的id

更新了:只需多一点附加信息

我就所述主题向Microsoft提出了官方支持请求。微软确认这是Internet Explorer中的一个bug,但是在当前的Internet Explorer版本中,这个bug不会被修复,但是它可能会在IE10中修复。作为一种解决方法:-)建议不要使用仅在案例中区分的ID。所以不要使用可以复制错误的ID。因此,正如我之前在评论中所设想的那样,我们最终得到了结果


尽管如此,因为回复确认这是一个bug,所以向Microsoft提出的请求对我来说是免费的(:-)。

在我看来,这是Internet Explorer中的一个bug。在官方文档对象模型HTML标准中,我可以找到关于jqGrid广泛使用的
namedItem
方法的描述:

此方法使用名称检索节点。使用[HTML 4.01]文档, 它首先搜索具有匹配id属性的节点。如果是 如果找不到,则会搜索具有匹配名称的节点 属性,但仅在允许使用名称的元素上 属性对于[XHTML1.0]文档,此方法仅搜索 具有匹配id属性的节点。此方法在中不区分大小写 HTML文档和XHTML文档中区分大小写的文档

因此,
namedItem
方法在XHTML文档中应区分大小写。另一方面,就像您可以在中测试一样,它只使用纯DOM而不使用jQuery或jqGrid,该方法在Internet Explorer中不区分大小写

演示的HTML代码如下所示:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>http://stackoverflow.com/questions/7230179/how-to-allow-to-use-case-sensitive-row-ids-in-jqgrid/7236985#7236985</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
    <table id="t">
        <tbody>
            <tr id="x"><td>1</td></tr>
            <tr id="X"><td>2</td></tr>
        </tbody>
    </table>
    <script type="text/javascript">
        'use strict';
        var mytable = document.getElementById("t"),
            tr1 = mytable.rows.namedItem("x"),
            tr2 = mytable.rows.namedItem("X"),
            tr3 = document.getElementById("x"),
            tr4 = document.getElementById("X");
        alert("getElementById works " + (tr3.id === tr4.id ? "case insensitive (BUG!!!)": "case sensitive") +
              "\nnamedItem works " + (tr1.id === tr2.id ? "case insensitive (BUG!!!)": "case sensitive"));
    </script>
</body>
</html>

http://stackoverflow.com/questions/7230179/how-to-allow-to-use-case-sensitive-row-ids-in-jqgrid/7236985#7236985
1.
2.
"严格使用",;
var mytable=document.getElementById(“t”),
tr1=mytable.rows.namedItem(“x”),
tr2=mytable.rows.namedItem(“X”),
tr3=document.getElementById(“x”),
tr4=document.getElementById(“X”);
警报(“getElementById工作”+(tr3.id==tr4.id?“不区分大小写(BUG!!!)”:“区分大小写”)+
“\nnamedItem工作”+(tr1.id==tr2.id?“不区分大小写(BUG!!!)”:“区分大小写”);
Internet Explorer显示
namedItem(“X”)
返回id=“X”的行,而不是id=“X”的行。在我测试过的所有其他(非Microsoft)web浏览器中都不存在相同的bug

我不能建议你目前没有解决办法。您应该只组织您的程序,这样您就不会在表(以及jqGrid)中使用区分大小写的id

更新了:只需多一点附加信息

我就所述主题向Microsoft提出了官方支持请求。微软确认这是Internet Explorer中的一个bug,但是在当前的Internet Explorer版本中,这个bug不会被修复,但是它可能会在IE10中修复。作为一种解决方法:-)建议不要使用仅在案例中区分的ID。所以不要使用可以复制错误的ID。因此,正如我之前在评论中所设想的那样,我们最终得到了结果


尽管如此,因为回复确认这是一个bug,所以向Microsoft提出的请求对我来说是免费的(:-)。

谢谢。目前,字母不在ID中编码。编码是lowe吗