2016-05-06 19 views
1

以下是我的代码使用tokeninput在标签中添加选择的数量作为标签。选择标签时保存按钮我将选择数组并将其保存在数据库中作为美国,爱尔兰在国家列。保存后想要预先使用jquery方法将数据保存为标签。以下是此过程的参考代码。使用PHP从数据库中预先填充令牌输入文本框中的值

 <link rel="stylesheet" type="text/css" href="http://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css"/> 
     <link rel="stylesheet" href="styles/token-input.css" type="text/css" /> 
     <script type="text/javascript" src="src/jquery.tokeninput.js"></script> 
<script> 
     var country_list=[ 
{id: 1, name: "UK"}, 
{id: 2, name: "CANADA"}, 
{id: 3, name: "IRELAND"}, 
{id: 4, name: "SINGAPORE"}, 
{id: 5, name: "AUSTRALIA"}, 
{id: 6, name: "NEWZEALAND"}, 
{id: 7, name: "SWITZERLAND"}, 
{id: 8, name: "CYPRUS"}, 
{id: 9, name: "FRANCE"}, 
{id: 10, name: "MALAYSIA"}, 
{id: 11, name: "ITALY"}, 
{id: 12, name: "SWEDEN"}, 
{id: 13, name: "GERMANY"}, 
{id: 14, name: "USA"}, 
{id: 15, name: "DUBAI"}, 
{id: 16, name: "SPAIN"}, 
{id: 17, name: "LITHUANIA"}, 
{id: 18, name: "NETHERLANDS"}, 
{id: 19, name: "LATVIA"}, 
{id: 20, name: "SOUTH AFRICA"}, 
{id: 21, name: "OTHERS"} 
]; 
var selected_countries=<?php echo json_encode(explode(",",$country));?>; 
//alert(selected_countries); 
var populate_list=[]; 
var index; 
for (index = 0; index < country_list.length; ++index) { 
console.log(country_list[index]); 
if(selected_countries.indexOf(country_list[index].name)>-1){ 

populate_list.push(country_list[index]); 
} 
} 
var prepopulate = { 
prePopulate : populate_list 
}; 

$("#country").tokenInput(country_list,prepopulate); 
</script> 

HTML代码

<input type="text" name="country" id="country"> 

以及保存结果数据库中的所有选定的文本,我用

AJAX代码

var arr1 = $('#country').tokenInput("get"); 
      var names1 = []; 
      $.each(arr1, function(i, obj) 
      { 
      names1.push(obj.name); 
      }); 
      var country=names1.join(); 

,并导致数据库端和UI端

enter image description here enter image description here

enter image description here

回答

1

http://loopj.com/jquery-tokeninput/

预填充 预填充与现有数据的tokeninput。设置为一个 JSON对象数组,例如:[{id:3,name:“test”},{id:5,name: “awesome”}]预填充输入。

var country_list=[ 
{id: 1, name: "UK"}, 
{id: 2, name: "CANADA"}, 
{id: 3, name: "IRELAND"}, 
{id: 4, name: "SINGAPORE"}, 
{id: 5, name: "AUSTRALIA"}, 
{id: 6, name: "NEWZEALAND"}, 
{id: 7, name: "SWITZERLAND"}, 
{id: 8, name: "CYPRUS"}, 
{id: 9, name: "FRANCE"}, 
{id: 10, name: "MALAYSIA"}, 
{id: 11, name: "ITALY"}, 
{id: 12, name: "SWEDEN"}, 
{id: 13, name: "GERMANY"}, 
{id: 14, name: "USA"}, 
{id: 15, name: "DUBAI"}, 
{id: 16, name: "SPAIN"}, 
{id: 17, name: "LITHUANIA"}, 
{id: 18, name: "NETHERLANDS"}, 
{id: 19, name: "LATVIA"}, 
{id: 20, name: "SOUTH AFRICA"}, 
{id: 21, name: "OTHERS"} 
]; 

var selected_countries=<?php echo json_encode(explode($country));?>; 
var populate_list=[]; 
var index; 
for (index = 0; index < country_list.length; ++index) { 

if(selected_countries.indexOf(country_list[index].name)>-1){ 
populate_list.push(country_list[index]); 
} 
} 
var prepopulate = { 
prepopulate : populate_list 
}; 

$("#country").tokenInput(country_list,prepopulate); 
+0

雅thts正确的,但我想从数据库值怎么能预填充我这样做。 –

+0

你应该只使用json_encode()来编码你的数据从php.If你想要的细节只是给我你的PHP代码 –

+0

没有什么特别的PHP代码。如果(isset($ _ POST ['country'])) { $ country = $ _POST ['country'];我只是从ajax获得了英国,爱尔兰的价值,并且我在国家/地区 –

1

更改您的文本框中输入下列:

<input type="text" name="country" id="country" value='<?php echo $country; ?>' data-country='<?php echo $country; ?>'> 

然后加入预填充参数类似以下内容:

prePopulate: $('#country').data('country') 
+0

我想从数据库中获取这个值。正如我在图片中所显示的那样。我想从数据库中检索英国和爱尔兰,并且动态地预先填充它 –

+0

它可以在jquery中完成,但是您在数据库中保存国家名称而不是id。这在前端不匹配。令牌匹配id的 – sacgro

+0

那么我该如何做到这一点。给我一些建议 –

相关问题