I realize similar questions have been asked thousands times and yet it doesn't seem to work for me. I have a textbox called "movieTitle", it is generated via Javascript by clicking a button. And I'm calling jQueryUI autocomplete on that textbox just like in the official example http://jqueryui.com/autocomplete/#remote.
It works well if I hardcode "movieTitle" in the original page; however it just fails when I create "movieTitle" by changing the innerHTML of the div "formsArea". searchMovies.php is the same with search.php from the example. I had tried many answers from internet and from here. I learned that I would have to use .on() to bind the dynamic element "movieTitle". Still it doesn't seem to work. Even the alert("hahaha") works. Thanks for your time. :) Here's my script:
$(function()
{   
$(document).on('focus', '#movieTitle', function(){
    //alert("hahaha");
    $("#movieTitle").autocomplete({
            source: "../searchMovies.php",
            minLength: 2
        });
    }
);    
window.onload = main;
function main()
{
    document.getElementById("movieQuery").onclick = function(){showForms(this.value);};
    document.getElementById("oscarQuery").onclick = function(){showForms(this.value);};
// displays query forms based on user choice of radio buttons
function showForms(str)
{
    var heredoc = "";
    if (str === "movie")
    {
        heredoc = '\
            <h1>Movie Query</h1>\
            <form action="processQuery.php" method="get">\
            <div class="ui-widget">\
                <label for="movieTitle"><strong>Name: </strong></label>\
                <input type="text" id="movieTitle" name="movieTitle" />\
                <input type="submit" name="submitMovie" value="Submit" />\
            </div>\
            </form>';
        //document.getElementById("formsArea").innerHTML = heredoc;
        //$("#formsArea").append(heredoc);
        $("#formsArea").html(heredoc);
    }
    else if (str === "oscar")
    {
        heredoc = '\
            <h1>Oscar Query</h1>\
            <form action="processQuery.php" method="get">\
                <strong>Name: </strong>\
                <input type="text" name="oscarTitle" />\
                <input type="submit" name="submitOscar" value="Submit"/>\
                </form>';
        document.getElementById("formsArea").innerHTML = heredoc;
    }
}
}
});
The HTML is:
<form action=$scriptName method="get">
        <label for="movieQuery"><input type="radio" name="query" id="movieQuery" value="movie" />Movie Query</label>
        <label for="oscarQuery"><input type="radio" name="query" id="oscarQuery" value="oscar" />Oscar Query</label>
    </form>
    <div id="formsArea">
        <b>Please choose a query.</b>
    </div>