JavaScript don';Don’不要用多选的方式阅读课文

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

我想捕获表单的值,在将它们记录到数据库之前,在某些函数中对它们进行详细说明。我想我应该使用JavaScript,所以我们现在:

我的模型:

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);