我有一个页面,用户可以点击一个显示“添加技能”的按钮,然后它应该显示一个输入框,你输入你的技能,它应该显示另一个输入框,你的技能水平应该出现,然后一个水平滑块,您可以在其中选择技能等级。
我在数据库中有一个名为'skill_list'的表,它有两列:id和name。名称字段将包含数千种技能,您可以从中选择。
如果技能存在于数据库中,我还需要它的功能才能发布表单。
我要问的是如何根据我当前的代码使用jQuery来实现自动完成功能,还是有人可以为我稍微重写一下?
目前我有以下代码并且它在firebug控制台中没有出现任何错误,并且一切正常但我真的不确定我必须做些什么才能使其工作:
skills.php - auto()函数(控制器):
public function auto(){
$skill = $_POST['skill-0'];
$query = $this->db->query('SELECT * from skill_list WHERE name LIKE "'.$skill.'%" ORDER by name ASC LIMIT 10');
$data = array();
if ( $query && mysql_num_rows($query) ){
while( $row = mysql_fetch_array($query, MYSQL_ASSOC) ){
$data[] = array(
'label' => $row['name'],
'value' => $row['id']
);
}
}
echo json_encode($data);
flush();
}
skills.php(查看)
<form method="post" action="skills/add" id="container">
<script>
$.fn.addSlide = function () {
return this.each(function () {
var $this = $(this),
$num = $('.slide').length++,
$name = $('<input type="text" class="inputField" id="autoskill" name="skill-' + $num + '" placeholder="What\'s your skill?"></div>'),
$slide = $('<br><div class="slide" id="slider-' + $num + '"></div><br>'),
$amt = $('<input name="amount-' + $num + '" id="amount-' + $num + '" class="inputField" readonly placeholder="Slide to select this skill level..."/><br>');
$this.append($name).append($amt).append($slide);
$slide.slider({
value: 0,
min: 0,
max: 5,
step: 1,
slide: function (event, ui) {
$amt.val(ui.value);
}
});
});
}
$('body').on('click', '.addNew', function(event) {
event.preventDefault();
$('#newFields').addSlide();
});
var count = 0;
$(document).ready(function(){
$('#autoskill').autocomplete({
source:'skills/auto', minLength:2
});
$('.addNew').click( function(event){
event.preventDefault();
$('#length').html(count);
count++;
});
$('.submitButton').click( function(event){
$('#container').append('<input type="hidden" name="count" value="' + count + '">');
});
});
</script>
<button class="addNew submitButton"> Add a Skill </button><br>
<div id="newFields"></div>
<input type="submit" class="submitButton" value="Save Skills">
</form>
希望有人可以提供帮助,谢谢!
答案 0 :(得分:1)
将$ name加入此
$name = $('<input type="text" class="inputField" id="autoskill-'+$num+'" name="skill-' + $num + '" placeholder="What\'s your skill?"></div>'),
之后
$this.append($name).append($amt).append($slide);
添加
$('#autoskill'+$num).autocomplete({
source:'skills/auto', minLength:2
});
并从您的就绪功能中完全删除自动完成行
然后为json make
$data[] = array(
'label' => $row['name'],
'value' => $row['id']
);
进入
$data[$row['id']]=$row['name']