1

私のフォームには、非表示の FloatField があります。

test         = forms.FloatField( widget=forms.HiddenInput())

Django は次の html を生成します。

<input type="hidden" name="test_set-0-test" id="id_test_set-0-test" />

このフィールドに JavaScript を静かに入力したい:

document.getElementById('id_test_set-0-test').value = X

しかし、Django が常に同じ ID "id_test_set-0-test" を生成するかどうかはわかりません。

IDでJavaScript Django要素を見つけるためのより良い方法はありますか?

または、Django バックエンドで ID を強制することは可能でしょうか?

ありがとう!

4

3 に答える 3

1

非表示フィールドの ID 属性を手動で設定できます。ドキュメント

test = forms.FloatField( widget=forms.HiddenInput(attrs={'id':'some-custom-test-id'}))

もちろん、これはページにこのフォームのインスタンスが 1 つある場合にのみ機能します。このメソッドを使用してクラス属性を手動で設定し、非表示のフィールドをすべて選択して、好きなように操作することもできます。

于 2012-08-31T12:48:15.723 に答える
0

このフィールドがフォームセット内のフォームの一部であり、フォームセットをレンダリングする標準の Django の方法を使用している場合、はい、Django は自動的に ID を制御します。

以外にも、この要素にアクセスする方法がありますid。css クラス、または DOM 内の位置、これらのプロパティの組み合わせ、または次のような要素の他のプロパティによって、要素を選択できます。data-[your-property-here]

ID プロパティが動的である場合、フォームセットの場合、DOM 内の位置によって要素を選択します。

于 2012-08-31T11:46:47.587 に答える
0

Django は常に同じ ID を生成しますが、心配する必要はありません

これは、jqueryだけを知っているより良い方法だと思います。次のような値を取得したいと思います

 $('#id_test_set-0-test').val();

あなたのやり方は正しい

于 2012-08-31T11:44:21.677 に答える