$(document).on('click', '#login a,#reg a,#log a', function () { var me = this; $.get(this.href, function(data) { $('#registerpanel').html(data).dialog({ title: $(me).text(), width: 500, hide: true, }); }); return false; });
<section id="loginForm"> <h2>使用本地帐户登录。</h2> @using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl })) { @Html.AntiForgeryToken() @Html.ValidationSummary(true) <fieldset class ="login"> <legend>“登录”表单</legend> <ol> <li> @Html.LabelFor(m => m.UserName) @Html.TextBoxFor(m => m.UserName) @Html.ValidationMessageFor(m => m.UserName) </li> <li> @Html.LabelFor(m => m.Password) @Html.PasswordFor(m => m.Password) @Html.ValidationMessageFor(m => m.Password) </li> <li> @Html.CheckBoxFor(m => m.RememberMe) @Html.LabelFor(m => m.RememberMe, new { @class = "checkbox" }) </li> </ol> <input id="btlogin" type="submit" value="登录" /> </fieldset> <p id="reg"> @Html.ActionLink("注册", "Register", "Account") </p> } </section>
多个元素绑定同一事件的时候,发现点击输入框后,焦点消失了,需要点住输入框才能输入,这是怎么回事呢?
return false;这个的问题
这样试试
$(document).on('click', '#login a,#reg a,#log a', function (event) { var me = this; $.get(this.href, function(data) { $('#registerpanel').html(data).dialog({ title: $(me).text(), width: 500, hide: true, }); }); event.stopPropagation(); });
@tomcat1988: 原因找出来了,是这个脚本有问题$(document).on('click', 'form', function() 造成click事件重复了。
原因可能是:
脚本有问题$(document).on('click', 'form', function() 造成click事件重复了。
改为$(document).on('submit', 'form', function()