我正在使用Yii框架中的zii.widgets.jui.CJuiAutoComplete小部件,其中自动完成工作正常,因为有一个URL作为建议的来源。
$this->widget('zii.widgets.jui.CJuiAutoComplete', array(
'model'=>$model,
'source'=>$this->createUrl('ajax/autoComplete'),
[...]
但现在我需要来自javascript函数的建议,如:
'source'=>'js: autoCompleteTags();'
但它似乎没有起作用。
是否可以使用函数作为源?如何设计javascript功能? 我试过这样的事情:
function autoCompleteTags{
var Tags= [
"ActionScript",
"AppleScript",
"Asp",
"BASIC",
"C",
"C++",
];
return Tags;
}
(这只是一个简单的例子。一些更复杂的代码将替换JS函数代码。但情况将是相同的)
感谢您提供任何帮助!
答案 0 :(得分:0)
var Tags = [
{
value: "jquery",
label: "jQuery",
},
{
value: "jquery-ui",
label: "jQuery UI",
},
{
value: "sizzlejs",
label: "Sizzle JS",
}
];
答案 1 :(得分:0)
小部件代码
<?php
$ingredients = Ingredient::getingredients();
$this->widget('zii.widgets.jui.CJuiAutoComplete', array(
'name' => 'ingredient[]',
//'source' => $ingredients,
'options' => array(
'change' => 'js:function() {
var context=$(this);
var childingredient = $(this).val();
alert(childingredient); return false;
$.ajax({
type:"post",
url : "' . Yii::app()->createAbsoluteUrl('recipe/getgramweight') . '",
data: "parentingredient=" + parentingredient,
success : function (response){
context.parent().next().find("select").html(response);
},
});
}',
'minLength' => '1',
),
'htmlOptions' => array(
'style' => 'height:35px;',
'class' => 'ingredientname'
),
));
?>
将值从数据库传递到小部件
<?php
$criteria = new CDbCriteria();
$criteria->select = "ingredient";
$criteria->condition = 'ingredient!=""';
$ingredients = Mymodel::model()->findAll($criteria);
$ings = "[";
foreach ($ingredients as $value)
{
$ings.='"' . $value->ingredient . '"' . ',';
}
$ings.="]";
$ingredients_array = explode(",]", $ings);
$ingredients_array[0] . "];";
?>
});
});
</script>