【发布时间】:2015-05-12 19:26:10
【问题描述】:
我正在尝试使用以下方法获取登录表单。我正在使用 JQuery 版本 1.11.2 和 MVC4。看来问题出在这行代码
<input type="button" onclick="getPasswordHash('password', 'nonce', 'hash');
$('#loginForm').submit(function (event) {
event.preventDefault();
alert('Submitting form.. Please wait');
return true;
})" value = "Login" />
这是在 Login.cshtml 中找到的完整代码
@model string
@{
ViewBag.Title = "Login";
}
@section ExtraHeaders
{
<script src="@Url.Content("~/Scripts/Login.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/sha256.js")" type="text/javascript"></script>
}
<form action="@Href("~/Accounts/Login")" method="post" id="loginForm">
<input type="text" name="name" id="name"/> Name <br/>
<input type="password" name="password" id="password"/> Password <br/>
<input type="hidden" name="nonce" id="nonce" value="@Model"/>
<input type="hidden" name="hash" id="hash" value="hash"/>
<input type="button" onclick="getPasswordHash('password', 'nonce', 'hash');
$('#loginForm').submit()" value = "Login" />
</form>
在 Login.js 文件中找到 getPassword 方法
function getPasswordHash(passwordElement, nonceElement, hashElement)
{
var password = $('#' + passwordElement).attr('value');
var nonce = $('#' + nonceElement).attr('value');
$('#' + hashElement).attr('value', $.sha256(password + nonce));
$('#' + passwordElement).attr('value', '');
}
问题是当我按下登录时没有任何反应。页面不刷新。它的行为就像我没有点击一样。
编辑:我现在检查了 Chrome 开发者工具中的源代码。它告诉我未捕获的引用错误:未定义 getPasswordHash
http://i.imgur.com/LOW9E0f.png
提前致谢。
【问题讨论】:
-
那是因为您在使用
event.preventDefault();时告诉提交事件不执行其默认行为(即提交)。 -
放回 .submit() 仍然无法正常工作
-
使用 preventDefault 是问题所在。我现在无法告诉您从此处更改了什么,请编辑您的问题以反映您的最新版本。
-
好的,请稍等
-
我已经更新了form中最后输入的代码行
标签: javascript jquery asp.net asp.net-mvc asp.net-mvc-4