如何将焦点设置为django表单元素的CharField

我在登录页面使用Django的表单。 I want to set focus to the first textField (username) when the page loads. 我尝试使用Jquery如下,但是没有得到结果。

 forms.py: from django import forms class LoginForm(forms.Form): userName = forms.EmailField(max_length=25) password = forms.CharField( widget=forms.PasswordInput, label="password" ) 

的login.html

 % block headextra %}  $(document).ready(function() { window.onload = function() { $("#id_username").focus(); // alert('test') if I add this line its works // setting focus to a textbox which added to template page direcltly using html tag the focus() method works well }; });  {% endblock %} {% block content %} 
{% csrf_token %} {{ form.as_table }}

$("#id_username")应为$("#id_userName")

正确的Django回答这个问题的方法如下(因为它不依赖于js被启用):

 from django import forms class LoginForm(forms.Form): user_name = forms.EmailField(max_length=25) password = forms.CharField( widget=forms.PasswordInput, label="password" ) def __init__(self): self.fields['user_name'].widget.attrs.update({'autofocus': 'autofocus' 'required': 'required', 'placeholder': 'User Name'}) self.fields['password'].widget.attrs.update({ 'required': 'required', 'placeholder': 'Password'}) 

此外,为了记录,我们避免使用camelcase作为对象属性。 干杯!

我只是想使用默认的Django登录表单,但是添加了autofocus属性,所以我从默认情况下派生了一个新的表单类。

 #myapp/forms.py from django.contrib.auth.forms import AuthenticationForm class LoginForm(AuthenticationForm): def __init__(self, *args, **kwargs): super(LoginForm, self).__init__(*args, **kwargs) self.fields['username'].widget.attrs.update({'autofocus': ''}) 

然后我在urls.py指定了新的表单类:

 from myapp.forms import LoginForm urlpatterns = patterns( '', url(r'^login/$', 'django.contrib.auth.views.login', {"template_name": "myapp/login.html", "authentication_form": LoginForm, "current_app": "myapp"}, name='login'), #... ) 
  password = forms.CharField( widget=forms.PasswordInput(attrs={'autofocus': 'autofocus'})) 

用于文本输入:

  field = forms.CharField( widget=forms.TextInput(attrs={'autofocus': 'autofocus'}))