0

我有一组复选框,选中后,应填充地图上的关联点。

这很好用:

var type_column = "FastFood";
var searchType = type_column + " IN (-1,";
if ( $("#divType1").is(':checked')) searchType += "1,";
if ( $("#divType2").is(':checked')) searchType += "2,";
if ( $("#divType3").is(':checked')) searchType += "3,";
if ( $("#divType4").is(':checked')) searchType += "4,";
whereClause += " AND " + searchType.slice(0, searchType.length - 1) + ")";

但这不会:

var type_column = "FastFood";
var searchType = type_column + " IN (-1,";
if ( $("#divType1").is(':checked')) searchType += "Arbys,";
if ( $("#divType2").is(':checked')) searchType += "Burgerking,";
if ( $("#divType3").is(':checked')) searchType += "Checkers,";
if ( $("#divType4").is(':checked')) searchType += "Dairyqueen,";
whereClause += " AND " + searchType.slice(0, searchType.length - 1) + ")";

将“Arbys”更改为“a”(等等)也不起作用,所以这与字符数无关。我还尝试在不包含逗号的字符串周围加上一组单引号。(遗憾的是,由于其他不相关的原因,仅使用数字并不是一种选择。)

4

3 回答 3

0

您可能想使用substring而不是slice. slice适用于数组,不适用于字符串。

于 2013-01-17T23:02:27.063 回答
0

总之,您的解决方案非常老套。您应该不在客户端构建查询。除此之外,以下代码可能是您更好的解决方案:

var type_column = "FastFood";
var whereClause = [];
if ( $("#divType1").is(':checked')) whereClause.push("Arbys");
if ( $("#divType2").is(':checked')) whereClause.push("Burgerking");
if ( $("#divType3").is(':checked')) whereClause.push("Checkers");
if ( $("#divType4").is(':checked')) whereClause.push("Dairyqueen");

whereClause += " AND " + type_column + " IN ('" + whereClause.join('\',\'') + "')";
于 2013-01-17T23:04:48.157 回答
0

您可能希望将搜索字符串添加到数组中。这样你就不必担心有一个像“Arbys”这样的字符串,末尾有一个逗号,然后去掉最后一个字符,而是可以使用逗号作为分隔符加入数组:

var type_column = "FastFood";
var searchType = type_column + " IN (-1,";
var search_array = [];
if ( $("#divType1").is(':checked')) searchArray.push("Arbys");
if ( $("#divType2").is(':checked')) searchArray.push("Burgerking");
if ( $("#divType3").is(':checked')) searchArray.push("Checkers");
if ( $("#divType4").is(':checked')) searchArray.push("Dairyqueen");
whereClause += " AND " + searchType + searchArray.join(',') + ")";
于 2013-01-17T23:06:27.563 回答