将 w3school 自动完成功能添加到 django 表单字段
Add w3school autocomplete functionality to django form field
我想添加使用表单和模型的 w3school.com autocomplete functionality to one of my django form fields. At first I used a simple html form and it worked, but after implementing the django-way,我无法再使用自动完成功能。
这是我的代码的相关部分:
forms.py
class PlantForm(forms.ModelForm):
class Meta:
model = Plant
fields = ('plantname')
widgets = {
'plantname': forms.TextInput(attrs={'placeholder': 'Trage hier den Namen des gelieferten Produkts ein.',
'class': 'autocomplete',
'autocomplete': 'off'}),
models.py
class Plant(models.Model):
plantname = models.CharField(max_length=255)
main.js
const plants = ["Strauß", "Pepperoni", "Physalis", "Aster"];
window.onload = function () {
autocomplete(document.getElementById("id_plantname"), plants);
};
index.html
<link rel="stylesheet" href= "{% static 'xyz/index.css' %}">
<script src="{% static 'xyz/main.js' %}"></script>
<form autocomplete="off" method="post">
{% csrf_token %}
{{ form|crispy }}
<button type="submit" class="btn btn-primary">Eintragen</button>
</form>
css和js代码是从w3schools tutorial复制粘贴的。
我想这与自动完成 class 有关。也许是在forms.py中赋值错误?根据 django 文档和我的测试,main.js 中字段的 id 应该是正确的。希望您能帮助我,在此先感谢您。
最好使用库来实现自动完成功能,而不是使用 w3school 的一些代码。
使用 jQuery 并以更少的代码高效地实现相同的功能
首先,创建一个 some_file.json
并保留要用于自动完成的数据。
例如
{
"something" : null
}
导入 jQuery 并将以下代码添加到您的 x.js 文件中。
更改它以满足您的需要。
$.getJSON('/static/some_dir/x.json', function(data_) {
$('input.autocomplete').autocomplete({
data: data_,
limit: 20,
minLength: 2
});
});
在 x.html 文件中,如下定义输入标签
<input title="something" type="text" class="autocomplete" autocomplete="off">
一旦实施,这应该完全符合您的要求。
我想添加使用表单和模型的 w3school.com autocomplete functionality to one of my django form fields. At first I used a simple html form and it worked, but after implementing the django-way,我无法再使用自动完成功能。 这是我的代码的相关部分:
forms.py
class PlantForm(forms.ModelForm):
class Meta:
model = Plant
fields = ('plantname')
widgets = {
'plantname': forms.TextInput(attrs={'placeholder': 'Trage hier den Namen des gelieferten Produkts ein.',
'class': 'autocomplete',
'autocomplete': 'off'}),
models.py
class Plant(models.Model):
plantname = models.CharField(max_length=255)
main.js
const plants = ["Strauß", "Pepperoni", "Physalis", "Aster"];
window.onload = function () {
autocomplete(document.getElementById("id_plantname"), plants);
};
index.html
<link rel="stylesheet" href= "{% static 'xyz/index.css' %}">
<script src="{% static 'xyz/main.js' %}"></script>
<form autocomplete="off" method="post">
{% csrf_token %}
{{ form|crispy }}
<button type="submit" class="btn btn-primary">Eintragen</button>
</form>
css和js代码是从w3schools tutorial复制粘贴的。 我想这与自动完成 class 有关。也许是在forms.py中赋值错误?根据 django 文档和我的测试,main.js 中字段的 id 应该是正确的。希望您能帮助我,在此先感谢您。
最好使用库来实现自动完成功能,而不是使用 w3school 的一些代码。
使用 jQuery 并以更少的代码高效地实现相同的功能
首先,创建一个 some_file.json
并保留要用于自动完成的数据。
例如
{
"something" : null
}
导入 jQuery 并将以下代码添加到您的 x.js 文件中。 更改它以满足您的需要。
$.getJSON('/static/some_dir/x.json', function(data_) {
$('input.autocomplete').autocomplete({
data: data_,
limit: 20,
minLength: 2
});
});
在 x.html 文件中,如下定义输入标签
<input title="something" type="text" class="autocomplete" autocomplete="off">
一旦实施,这应该完全符合您的要求。