在下拉按钮上调用ajax
我创建了一个表单,并从 Category
模型中填充下拉框的值。这个功能正常。然后我在模板中这样显示这个表单 {{ language_form }}
,也没问题。现在我想在这个下拉框上实现 onchange
事件,使用 ajax。当下拉框的值改变时,这个函数会被调用。
补充一下:其实可以不使用 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
在你的表单最后加上这段代码。
...
</form>
<script type="text/javascript">
var ddl = document.getElementById('ddlYourDropDownListID');
ddl.onchange = function() {
var str = 'someValue';
showMovie(str);
};
</script>
</body>
</html>
2
如果你只是想添加一个 onchange
属性,那么可以这样做:
class Language(forms.Form):
language = forms.ModelChoiceField(queryset=Category.objects.all(), widget=forms.Select(attrs={'onchange':'ajaxfunction()'}))
或者你也可以手动渲染表单。