JavaScript don';Don’不要用多选的方式阅读课文
我想捕获表单的值,在将它们记录到数据库之前,在某些函数中对它们进行详细说明。我想我应该使用JavaScript,所以我们现在: 我的模型:JavaScript don';Don’不要用多选的方式阅读课文,javascript,html,django,m2m,Javascript,Html,Django,M2m,我想捕获表单的值,在将它们记录到数据库之前,在某些函数中对它们进行详细说明。我想我应该使用JavaScript,所以我们现在: 我的模型: class Region(models.Model): number = models.CommaSeparatedIntegerField(max_length=9, unique=True) city = models.OneToOneField(Community, blank= True, null=True) resourc
class Region(models.Model):
number = models.CommaSeparatedIntegerField(max_length=9, unique=True)
city = models.OneToOneField(Community, blank= True, null=True)
resources = models.ManyToManyField(Resource, blank=True)
我的表格:
class Crea_RegionForm(forms.ModelForm):
quantity = forms.IntegerField(initial=1)
resources=MyModelMultipleChoiceField(Resource.objects.all(),
widget=forms.CheckboxSelectMultiple, label='Risorse')
class Meta:
model = Region
fields = ('number', 'city', 'resources')
def __init__(self, *args, **kwargs):
super(Crea_RegionForm, self).__init__(*args, **kwargs)
quantity = self.fields['quantity'] #costum field
MyModelMultipleChiceField:
class MyModelMultipleChoiceField(forms.ModelMultipleChoiceField):
def label_from_instance(self, obj):
return format_html(
'<span style="font-weight:normal">{}</span>', obj.name)
document.write(“risorse:+risorse[1].nextSibling.innerHTML)
give=>未定义
console.log(risorse)
give=>RadioNodeList[,,,]
console.log(risorse[1].nextSibling.innerHTML)
give=>未定义对不起,但是复选框
没有文本
属性,因此,唯一的属性是:选中
,名称
,必需
,值
你需要更新你的代码,可能在你的应用程序中某处有一个对象带有键
=>文本
,这样你就可以找到与特定键
对应的文本,类似这样:
var _texts = {'1': 'Text 1', '2': 'Text 2'};
var risorse = myform.resources;
for (var i = 0; i < risorse.length; i++) {
document.write("risorse: " + _texts[risorse[i].value]);
}
完成!!这看起来很有效 我的剧本:
...
var risorse = myform.resources;
var selectedresources = [];
for (var i = 0; i < risorse.length; i++) {
if (risorse[i].checked) selectedresources.push(risorse[i].nextSibling.nextSibling.innerHTML);
}
document.write("risorse: " + selectedresources);
。。。
var risorse=myform.resources;
var selectedresources=[];
对于(变量i=0;i
什么给了你风险[i]?尝试console.log(risorse[i])
并检查输出。document.write(risorse[1])=[object HTMLInputElement]使用console.log(risorse[i])
并检查开发控制台中的输出,在最新的浏览器中,它会按F12
打开,在Chrome
等浏览器中,可以浏览输出。console.log(risorse[1])=nextSibling.innerHTML看起来很有趣,但不起作用。console.log(risorse[1])=未定义的console.log(risorse[1])
?????你能用你现在拥有的,你正在尝试的和失败的地方来更新你答案中的代码吗!console.log(risorse[1].nextSibling.innerHTML)=在您拥有的var risorse=myform.resources的那一行之前,未定义操作代码>,对吗?console.log(risorse)
编辑并回答的第一篇文章的输出是什么
...
var risorse = myform.resources;
document.write("risorse: " + risorse[1].nextSibling.innerHTML)
console.log(risorse)
console.log(risorse[1].nextSibling.innerHTML)
var selectedresources = [];
for (var i = 0; i < risorse.length; i++) {
document.write("risorse: " + risorse[i].nextSibling.innerHTML);
if (risorse[i].selected) selectedresources.push(risorse[i].nextSibling.innerHTML);
}
document.write("risorse: " + selectedresources);
var _texts = {'1': 'Text 1', '2': 'Text 2'};
var risorse = myform.resources;
for (var i = 0; i < risorse.length; i++) {
document.write("risorse: " + _texts[risorse[i].value]);
}
var risorse = myform.resources;
for (var i = 0; i < risorse.length; i++) {
document.write("risorse: " + risorse[i].nextSibling.innerHTML);
}
...
var risorse = myform.resources;
var selectedresources = [];
for (var i = 0; i < risorse.length; i++) {
if (risorse[i].checked) selectedresources.push(risorse[i].nextSibling.nextSibling.innerHTML);
}
document.write("risorse: " + selectedresources);