【问题标题】:How hide/show a field upon selection of a radio button in django admin?在 django admin 中选择单选按钮后如何隐藏/显示字段?
【发布时间】:2019-01-30 12:26:03
【问题描述】:

models.py

from django.db import models
from django.contrib.auth.models import User

STATUS_CHOICES = ((1, 'Accepted'),(0, 'Rejected'),)
class Leave(models.Model):
    ----
    ----
    ----
    ----
    status = models.IntegerField(choices=STATUS_CHOICES, default = 0)
    reason_reject = models.CharField(('reason for rejection'),max_length=50, blank=True)

    def __str__(self):
        return self.name

admin.py

from django.contrib import admin
from .models import Leave

@admin.register(Leave)
class LeaveAdmin(admin.ModelAdmin):
    ------
    ------
    -----

    class Media:
        js = ('/static/admin/js/admin.js')

- admin.js

    (function($) {
    $(function() {
        var reject = document.getElementById('id_status_0')
        var accept = document.getElementById("id_status_1")
        var reason_reject = document.getElementById("id_reason_reject")
        if (accept.checked == true){
            reason_reject.style.display = "none"
        }
        else{
            reason_reject.style.display = "block"
        }
    });
})(django.jQuery);

现在我已经在 admin.py 中导入了文件,如何触发 jQuery 函数使其工作。

更新-

该功能有效,但我需要重新加载页面以使该字段出现和消失。我想要一些与 HTML 中的 'on-click' 事件等效的东西。我对Javascript一无所知。

【问题讨论】:

  • 看起来更像是前端问题而不是后端问题。您应该尝试从浏览器控制台中执行 js 内容,以便验证一切是否按预期工作。
  • 您应该添加想要的行为的屏幕截图(从静态视图中拍摄 2 张​​照片);此外,生成的 HTML 的相关摘录会很好。
  • @AnttiHaapala 已更新!
  • @Jose 您需要打开 javascript/开发者控制台并在那里查找错误!
  • 你说:“函数”,但我可以看到 4 个函数。其中哪一个被触发,或者没有一个被触发?!请在此处添加例如alert('I am in global level');alert('I am change event');,并找出触发的内容和未触发的内容。

标签: javascript python jquery django


【解决方案1】:
$(function() {
    $('input[name="status"]').on('click', function() {
        if ($(this).val() == '0') {
            $('#id_reason_reject').show();
        }
        else {
            $('#id_reason_reject').hide();
        }
    });
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 2013-07-11
    • 2020-12-28
    • 2013-06-25
    • 1970-01-01
    • 2016-03-13
    相关资源
    最近更新 更多