我正在使用jquery.ui自动完成脚本。
请参阅此fiddle
所以,而不是
colors = [['White', '#fff'], ['Black', '#000'], ['Red', '#f00'], ['Green', '#0f0'], ['Blue', '#00f']];
我在查询数据库后以相同的数组形式获取数据,但是从PHP脚本获取数据。
所以在我的脚本中,colors = data;
问题是我需要更改数组显示中的第二项,只需在值周围添加括号即可。我该怎么办?
这是我的剧本
$("document").ready(function(){
var data = {
"action": "test"
};
data = $(this).serialize() + "&" + $.param(data);
$.ajax({
type: "GET",
dataType: "json",
url: "store2.php?target="+target, //Relative or absolute path to response.php file
data: data,
success: function(data) {
//console.log(data);
var useThis=[];
if(target=="subject")
{
useThis = [{
name: 'level',
minWidth: 'auto',
symbol: ''},
{
name: 'subject',
minWidth: 'auto',
symbol: ' > '},
{
name: 'posts',
minWidth: 'auto',
symbol: ' '},
];
}
else if(target=="location")
{
useThis = [{
name: 'level',
minWidth: 'auto',
symbol: ''}];
}
else
{
useThis = [{
name: 'level',
minWidth: 'auto',
symbol: ''}];
}
var columns = useThis;
colors = data;
//alert(selectThis);
var valueV=targetItem.attr("value");
targetItem.mcautocomplete({
showHeader: true,
columns: columns,
source: colors,
select: function(event, ui)
{
// Set the input box's value
var selectThis = $(this).attr("class").split(" ")[0];//get only the first class
if(target=="subject")
{
this.value = (ui.item ? ui.item[0] +" > " + ui.item[selectThis] : '');
}
else
{
this.value = (ui.item ? ui.item[selectThis] : '');
}
// Set the output div's value
// $('#show_subject') && $('#show_place').text(ui.item ? (target+ ' = ' + ui.item[selectThis] + ui.item[2]) : 'Select a subject');
if(target=="subject")
{
$('input[name="try"]').val(ui.item[3]);
}
if(target=="location")
{
$('input[name="lat"]').val(ui.item[1]);
$('input[name="lon"]').val(ui.item[2]);
}
if(target=="tutor")
{
$('input[name="tutor"]').val(ui.item[0]);
}
return false;
}
});
}
});
PHP
$statement1="SELECT * FROM categories,subjects WHERE categories.catid=subjects.catid";
$target=$_GET["target"];
//" catname"," subname"," subcount"和" catid"是数据库中的列名称。所以我不能在这里添加括号,否则我不会让他们的价值正确。
$sql=$statement1;
$v_1="catname";
$v_2="subname";
$v_3="subcount";
$v_4="catid";
$stmt =connection::$pdo->prepare($sql);
$stmt->execute();
$json=array();
while($row = $stmt->fetch())
{
array_push($json,array($row[$v_1],$row[$v_2],$row[$v_3],$row[$v_4]));
}
echo json_encode($json)
那么如何定位特定项目并在其周围添加括号?
答案 0 :(得分:0)
我在数组中的第二项添加了括号:
source: jQuery.each(colors , function(index, value){
console.log(value[1]);
value[2] = "("+value[1]+")";
}),
答案 1 :(得分:0)
更改each
功能中的_renderItem
循环,如下所示。希望这会对你有所帮助。
$.each(this.options.columns, function(index, column) {
var i = column.valueField ? column.valueField : index;
var itm=item[i];
if (i==1)
itm='('+item[i]+')';
t += '<span style="float:left;min-width:' + column.minWidth + ';">' + itm+'</span>'
});