如何在 django 模板中的另一个字段中更改后禁用复选框?

Posted

技术标签:

【中文标题】如何在 django 模板中的另一个字段中更改后禁用复选框?【英文标题】:How to disable checkbox after change in another field in django template? 【发布时间】:2018-12-17 13:36:30 【问题描述】:

我是初级后端 python 开发人员 (Django),但我必须做“简单”的前端任务。 我认为这很容易,但对我来说并不容易,因为我的前端以 F 结束 :(

我在这个应用程序中使用引导程序。

我有一个包含一些字段的表单字段,其中两个是名为 'checkbox_1' 的复选框 和名为 'price_1' 的价格的数字字段。

True 上的复选框表示“产品是免费的”所以...

如果 checkbox_1 为 True,“price_1”的字段应该被禁用,所以我不能在上面写字。 如果 'price_1' 为 0 且 'checkbox_1' 为 False,则会显示消息“如果产品不是免费的,价格不能为 0”。

我尝试过使用 django 模板使用 if 语句:

<form action="index.html" method="POST">
    <div class="form-group">
        <label class="control-label"> form.price.label  </label>
         form.price  EUR
    </div>
    <div class="checkbox m-b-14">
        <label> form.free_product  <i>/</i>  form.free_product.label </label>

        <!--AND HERE IS MY TRY-->
        % if form.price.value == 0 %
            TEST Price 0
        % else %
            TEST price is bigger than 0
        % endif %
    </div>
</form>

只有在第一次进入页面后才有效。 我想我必须使用JS?或者也许有可能在 bootstrap 或 django 模板中做到这一点?

即使我的示例可行,我仍然不知道如何在运行时传递“必需”或“禁用”...在您单击复选框的那一刻。

这对我来说是黑魔法,我不知道如何正确搜索它;/

你能帮我在这里做些什么来使它工作吗?

我将非常感激......

【问题讨论】:

是的,你需要 JS。 【参考方案1】:

你不能用 django 来做,因为 django 有同步调用......所以你再次得到来自 django 的任何响应,你需要发出一个新请求或刷新你的页面......因为你需要一些动态的东西,你应该使用 javascript这样做。

document.getElementById('yourBox').onchange = function() 
    document.getElementById('yourText').disabled = !this.checked;
;

<input type="text" id="yourText" disabled />
<input type="checkbox" id="yourBox" />

【讨论】:

感谢您的回答!我应该把这段代码放在哪里?通常在 html 行之间的 html 文件中?它会工作吗?在这个项目中,有一个大文件 app.min.js,其中包含大量功能,但格式错误,因此很难阅读。也许我应该把它放在那里? 你应该得到我的代码并适应你的情况,JS代码应该放在你html的标签中的 不要放在 app.min.js 这是“缩小”文件,这不适合人类阅读...缩小是获取“人类阅读”文件并删除所有空格的操作它更轻巧,因此获得更多性能,您应该创建自己的 javascript 文件... someFile.js 并将您的逻辑放在那里并将其导入您的项目 查看我之前发布的链接并学习 javascript 的基础知识

以上是关于如何在 django 模板中的另一个字段中更改后禁用复选框?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 模板中访问字典列表

当更新同一模型中的另一个特定字段时,如何更新 Django models.DateTimeField?

如何在 django 模板的 forloop 中访问 If 语句中的元组值?

如何根据 django admin 中的另一个选择字段限制选择字段选项

在 django 模板中的另一个大括号内使用大括号

使用更改 django 模板中表单字段的名称属性