1

ユーザーが「スキルを追加」というボタンをクリックすると、スキルを入力する入力ボックスが表示され、スキルレベルが表示される別の入力ボックスが表示され、次に水平スライダーが表示されるページがありますスキルレベルを選択します。

データベースに「skill_list」というテーブルがあり、id と name の 2 つの列があります。名前フィールドには、選択できる数千のスキルが含まれます。

また、スキルがデータベースに存在する場合にのみフォームを投稿する機能も必要です。

私が求めているのは、現在のコードに基づいて jQuery でオートコンプリートを動作させる方法、または誰かが私のために少し書き直すことができるかということです。

現時点では、次のコードがあり、firebug コンソールでエラーが発生せず、すべてが正常に機能しますが、これを機能させるために何をしなければならないか本当にわかりません。

skill.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();

}

skill.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>

うまくいけば、誰かが助けてくれます、ありがとう!

4

1 に答える 1