0

私は基本的に2つのイベントを持っています。一番上のものは、jQuery オートコンプリートから選択を選択し、それを div searchresultdataに出力します。2 つ目は #*search_input* からコンテンツを取得し、searchresultdata に出力します

var devices = [
    "ActionScript",
    "AppleScript",
    "Asp",
    "BASIC",
    "C",
    "C++",
    "Clojure",
    "COBOL",
    "ColdFusion",
    "Erlang",
    "Fortran",
    "Groovy",
    "Haskell",
    "Java",
    "JavaScript",
    "Lisp",
    "Perl",
    "PHP",
    "Python",
    "Ruby",
    "Scala",
    "Scheme"
    ];

$("#search_input").autocomplete({
    source: devices,
    select: function(e, i) {

        var search_input = i.item.value;
        document.getElementById('searchresultdata').innerHTML = search_input;
    }
});

//Append div with contents from function sendSelected
$("#search_input").on("keyup change", function() {
    var search_input = $(this).val();
    if (search_input.length > 1 || search_input == '*') {
        document.getElementById('searchresultdata').innerHTML = "Everything";
    }

    document.getElementById('searchresultdata').innerHTML = search_input;
});

実際の例については、http: //jsfiddle.net/k2SMb/4/を参照してください。

とにかく、これを1つにまとめて少し整頓することはできますか?

4

1 に答える 1

1

2 つのイベントを連鎖させることで整理し、jQuery の $('#id_selector') を使用して、一度だけ必要なときに変数に書き込む必要がなくなります。結果:

$("#search_input").autocomplete({
    source: devices,
    select: function(e, i) {
        $('#searchresultdata').text(i.item.value);
    }
}).on("keyup change", function() {
    var search_input = $(this).val();
    if (search_input.length > 1 || search_input == '*') {
        $('#searchresultdata').text("Everything")
    }
    $('#searchresultdata').text(search_input);
});​
于 2012-10-05T13:45:55.407 に答える