在django模板中使用javascript

在django模板中使用javascript,javascript,django,forms,Javascript,Django,Forms,我有一个工作的javascript文件,它使用element ID标记在html页面上添加和删除复选框和下拉列表。我想将javascript代码应用于django应用程序生成的表单。我试图通过如下更改javascript元素ID来隐藏字段 id1.style.visibility = 'hidden'; 匹配django生成的表单上的元素,但javascript没有生效,字段仍然可见 在我的django模板html文件中,我包含了来自django提供的站点的js文件 <head>

我有一个工作的javascript文件,它使用element ID标记在html页面上添加和删除复选框和下拉列表。我想将javascript代码应用于django应用程序生成的表单。我试图通过如下更改javascript元素ID来隐藏字段

id1.style.visibility = 'hidden';
匹配django生成的表单上的元素,但javascript没有生效,字段仍然可见

在我的django模板html文件中,我包含了来自django提供的站点的js文件

<head>
   <script type="text/javascript" src="/static/js/submitform.js"></script>
   <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>

我可以在模板页面的源代码中看到如上所述的js文件,并可以单击链接查看javascript代码。所以我知道javascript文件包含在模板中

我对css文件做了类似的操作,并在模板页面上生效,但是我无法正确应用javascript

我已经为此挣扎了一段时间,以前从未这样做过。有谁能提供帮助或知道我可以阅读的任何文档,这些文档向我展示了如何做到这一点

对不起,如果这不是一个合适的问题,但我以前没有这样做,我只是停留在这个。。我正在从事的项目是一个内部测试站点,所以我现在不担心将js文件压缩到客户端或任何我可能接触到的注入。。只是了解如何做到这一点


谢谢-Oli

在包含Jquery文件之前,您需要包含Jquery库,因此请将其交换到以下位置:

<head>
   <script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script>
   <script type="text/javascript" src="/static/js/submitform.js"></script>
</head>

编辑:


此外,jquery库的脚本标记中缺少“type”属性。我已经更新了代码,请看一看。

在包含Jquery文件之前,您需要包含Jquery库,因此请将其交换到以下位置:

<head>
   <script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script>
   <script type="text/javascript" src="/static/js/submitform.js"></script>
</head>

编辑:


此外,jquery库的脚本标记中缺少“type”属性。我已经更新了代码,请看一看。

您可以这样做:

#html
{% block main-menu %} 
    <br>
    <br>
    Click here to play with username
    <button id="show_button">show</button>
    <button id="hide_button">hide</button>
    <br>
    <br>
    <script type="text/javascript">
        $(function() {
                $("#show_button").click(function() {
                    $("#id_username").show();
                });
                $("#hide_button").click(function() {
                    $("#id_username").hide();
                });
        });
    </script>
    <div class="contentarea">
        <form method="post" action="">{% csrf_token %}
            {{ reg_form.as_p }}
            <input type="submit" value="register" />
        </form>
    </div>

#forms.py
class RegistrationForm(forms.Form):
    username = forms.CharField(label="Username", max_length=30)
    email = forms.EmailField(label="Email")
    password = forms.CharField(label="Password", widget=forms.PasswordInput())
    password2 = forms.CharField(label="Password (Again)", widget=forms.PasswordInput())

Here your clean methods and so on
#html
{%块主菜单%}


点击这里玩用户名 显示 隐藏

$(函数(){ $(“#显示按钮”)。单击(函数(){ $(“#id_username”).show(); }); $(“#隐藏按钮”)。单击(函数(){ $(“#id_username”).hide(); }); }); {%csrf_令牌%} {{reg_form.as_p}} #forms.py 班级登记表(forms.Form): username=forms.CharField(label=“username”,最大长度=30) email=forms.EmailField(label=“email”) password=forms.CharField(label=“password”,widget=forms.PasswordInput()) password2=forms.CharField(label=“Password(再次)”,widget=forms.PasswordInput() 这里有你的清洁方法等等

Django将自动为您的字段创建一个id,如id\u yourfield。

您可以这样做:

#html
{% block main-menu %} 
    <br>
    <br>
    Click here to play with username
    <button id="show_button">show</button>
    <button id="hide_button">hide</button>
    <br>
    <br>
    <script type="text/javascript">
        $(function() {
                $("#show_button").click(function() {
                    $("#id_username").show();
                });
                $("#hide_button").click(function() {
                    $("#id_username").hide();
                });
        });
    </script>
    <div class="contentarea">
        <form method="post" action="">{% csrf_token %}
            {{ reg_form.as_p }}
            <input type="submit" value="register" />
        </form>
    </div>

#forms.py
class RegistrationForm(forms.Form):
    username = forms.CharField(label="Username", max_length=30)
    email = forms.EmailField(label="Email")
    password = forms.CharField(label="Password", widget=forms.PasswordInput())
    password2 = forms.CharField(label="Password (Again)", widget=forms.PasswordInput())

Here your clean methods and so on
#html
{%块主菜单%}


点击这里玩用户名 显示 隐藏

$(函数(){ $(“#显示按钮”)。单击(函数(){ $(“#id_username”).show(); }); $(“#隐藏按钮”)。单击(函数(){ $(“#id_username”).hide(); }); }); {%csrf_令牌%} {{reg_form.as_p}} #forms.py 班级登记表(forms.Form): username=forms.CharField(label=“username”,最大长度=30) email=forms.EmailField(label=“email”) password=forms.CharField(label=“password”,widget=forms.PasswordInput()) password2=forms.CharField(label=“Password(再次)”,widget=forms.PasswordInput() 这里有你的清洁方法等等

Django将自动为您的字段创建一个id,如id#yourfield。

为什么不执行$('#id1').hide()?我应该把代码放在哪里?我已经看了这篇文章,这是我想做的,但不知道在哪里编码?你到底是如何调用JS的?我以为javascript是在页面加载时执行的。也许这就是问题所在?因此,它需要在html文件中调用?如果您正在隐藏或显示字段以响应选中的复选框,那么在加载页面时仅运行JS有什么意义?假设您希望它位于复选框的
onclick
属性上,否?为什么不执行$('#id1').hide()?我应该把代码放在哪里?我已经看了这篇文章,这是我想做的,但不知道在哪里编码?你到底是如何调用JS的?我以为javascript是在页面加载时执行的。也许这就是问题所在?因此,它需要在html文件中调用?如果您正在隐藏或显示字段以响应选中的复选框,那么在加载页面时仅运行JS有什么意义?假设您希望它位于复选框的
onclick
属性上,否?jquery库的脚本标记中也缺少“type”属性。我已经更新了代码,请看一看。@Amyth如果根据HTML 5标准,脚本的类型为“text/javascript”,则不需要指定type属性。此外,jquery库的脚本标记中缺少“type”属性。我已经更新了代码,请看一看。@Amyth如果根据HTML 5标准,脚本的类型为“text/javascript”,则不需要指定type属性。感谢Serg抽出时间回答我的问题。这让我上路了。。加上这一点,我有足够的时间去理解它是如何运作的。。我知道django为我创建了ID,所以我使用firebug来确定这些ID,并附加jquery代码以获得我想要的结果。感谢Serg抽出时间回答我的问题。这让我上路了。。加上这一点,我有足够的时间去理解