Saincheaptha JavaScript sa riarachánLink to this heading
Imeachtaí foirm inlíneLink to this heading
B'fhéidir gur mhaith leat roinnt JavaScript a fhorghníomhú nuair a chuirtear foirm inlíne leis nó baintear san fhoirm athraithe riaracháin. Ceadaíonn na himeachtaí formset:added agus formset:removed seo. Is é Event.detail.FormSetName an tacar foirme leis an tsraith a bhaineann leis. Maidir leis an imeacht formset:added, is é event.target an tsraith nua-bhreise.
I do theimpléad saincheaptha change_form.html, leathnaigh an bloc admin_change_form_document_ready agus cuir an cód éisteora imeachta leis:
{% extends 'admin/change_form.html' %}
{% load static %}
{% block admin_change_form_document_ready %}
{{ block.super }}
<script src="{% static 'app/formset_handlers.js' %}"></script>
{% endblock %}
document.addEventListener('formset:added', (event) => {
if (event.detail.formsetName == 'author_set') {
// Do something
}
});
document.addEventListener('formset:removed', (event) => {
// Row removed
});
Dhá phointe le coinneáil i gcuimhne:
Caithfidh an cód JavaScript dul i mbloc teimpléad má tá tú ag oidhreacht
admin/change_form.htmlnó ní dhéanfar é a léiriú sa HTML deiridh.Cuirtear
{{block.super}} `leis toisc go bhfuil cód JavaScript i mbloc ``admin_change_form_document_readyDjango chun oibríochtaí éagsúla a láimhseáil sa fhoirm athraithe agus ní mór dúinn é sin a léiriú freisin.
Leaganacha tacaíochta de Django níos sine ná 4.1Link to this heading
Má chaithfidh d'éisteoir imeachta tacú le leaganacha níos sine de Django fós caithfidh tú jQuery a úsáid chun d'éisteoir imeachta a chlárú. Láimhseálann jQuery imeachtaí JavaScript ach níl an cúil fíor.
D'fhéadfá seiceáil go bhfuil Event.detail.FormSetName` ann agus titim ar ais chuig an sean-shíniú éisteora mar seo a leanas:
function handleFormsetAdded(row, formsetName) {
// Do something
}
$(document).on('formset:added', (event, $row, formsetName) => {
if (event.detail && event.detail.formsetName) {
// Django >= 4.1
handleFormsetAdded(event.target, event.detail.formsetName)
} else {
// Django < 4.1, use $row and formsetName
handleFormsetAdded($row.get(0), formsetName)
}
})