1、先引入 js插件
https://github.com/twitter/typeahead.js
https://github.com/nobleclem/jQuery-MultiSelect
2、实现代码如下(使用Yii框架实现):
- php—/models/product/_form.php
<div class="form-group field-product-sku" id="searchskuholder">
<label class="control-label" for="product-sku">Search SKU</label>
<p>
<input type="text" id="search-sku" class="typeahead" name="product_sku" placeholder='Search SKU to copy' value=''>
/div>
- javascript—/models/product/_form.php
var sku = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.whitespace,
queryTokenizer: Bloodhound.tokenizers.whitespace,
identify: function(obj) { return obj.sku; },
remote: {
url: "?r=items/searchsku&search=%QUERY",
wildcard: "%QUERY"
}
});
$("#searchskuholder .typeahead").typeahead({
hint: true,
highlight: true,
minLength: 1
},
{
name: "sku",
limit: 80,
source: sku
}
);
- php—controllers/ItemsController.php
public function actionSearchsku()
{
$searchStr = Yii::$app->request->get('search');
Yii::$app->response->format = 'json';
$rc = array();
$rows = (new \yii\db\Query())->select(['id', 'name', 'sku'])
->from('product')
->where(['like', 'sku', $searchStr])
->limit(20)
->all();
foreach ($rows as $row)
{
$rc[] = $row['sku'];
}
return $rc;
}
3、效果图如下: