在下拉按钮上调用ajax

时间:2011-11-08 08:55:32

标签: python ajax django

我已经创建了一个表单并从下拉框中的Category模型填充其值。它的工作。 我在这个{{ language_form }}模板中显示了这个表单。现在,我想在此下拉列表中使用ajax实现onchange事件。函数将调用下拉值的更改。

编辑:没有django表单就可以这样做。 <select onchange='ajaxfunction()'></select>但我正在使用django表格。

表格

from django import forms
from myapp.movie.models import Category
class Language(forms.Form):
     language = forms.ModelChoiceField(queryset=Category.objects.all())

这是我的Ajax功能

   function showMovie(str) {
        if (str == "") {
            document.getElementById("txtHint").innerHTML = "";
            return;
        }
        if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        }
        else {// code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
            }
        }
        xmlhttp.open("GET", "movie_list?q=" + str, true);
        xmlhttp.send();
    }

2 个答案:

答案 0 :(得分:2)

如果您只想添加onchange attr,那么:

class Language(forms.Form):
    language = forms.ModelChoiceField(queryset=Category.objects.all(), widget=forms.Select(attrs={'onchange':'ajaxfunction()'}))

或者您可以手动渲染表单。

答案 1 :(得分:0)

在表单的末尾添加此代码。

...
</form>

    <script type="text/javascript">
        var ddl = document.getElementById('ddlYourDropDownListID');
        ddl.onchange = function() {
            var str = 'someValue';
            showMovie(str);
        };
    </script>

</body>
</html>