【问题标题】:Password textbox value on jqueryjquery上的密码文本框值
【发布时间】:2012-03-17 10:48:38
【问题描述】:

我有一个奇怪的问题,我一直在关注 Matt Blagden 的 youtube 教程,以学习 MVC3 .Net,到目前为止一切都很好,但在 13 分钟后的第 4 个视频中,他创建了以下javascript:

function getPasswordHash(passwordElement, nonceElement, hashElement)
{
    var password = ('#' + passwordElement).attr('value');
    var nonce = ('#' + nonceElement).attr('value');

    $('#' + hashElement).attr('value', $sha256(password + nonce));
    $('#' + passwordElement).attr('value', '');
}

我的 javascript/jquery 知识非常基础,但对我来说很有意义,问题是 java 脚本不会执行,并且 javascript 控制台不断给我以下错误:

"Uncaught TypeError: Object #password has no method 'attr' getPasswordHashLogin.js:3 (匿名功能)登录:43 点击”

这是我的视图代码:

@model string
@{
    ViewBag.Title = "Login";
}
@section ExtraHeaders
{
    <script type="text/javascript" src="@Url.Content("~/Scripts/Login.js")"></script>
    <script type="text/javascript" src="@Url.Content("~/Scripts/SHA256.js")"></script>
}
<form action="@Href("~/Account/Login")" method="post" id="loginForm">
Name:
<input type="text" name="name" id="name" />
<br />
Password:
<input type="password" name="password" id="password" />
<input type="hidden" name="nonce" value="@Model"  id="nonce" />
<input type="hidden" name="hash" value="hash" id="hash" />
<input type="button" name="submit" onclick="getPasswordHash('password', 'nonce', 'hash'); $('#loginForm').submit();"
    value="Login" />
</form>

¿ 我做错了什么?,我不知道问题出在哪里,这真的让我很生气:@。

编辑

我将 .js 更改为以下内容:

function getPasswordHash(passwordElement, nonceElement, hashElement)
{
    var password = ('#' + passwordElement).attr('value');
    var nonce = ('#' + nonceElement).attr('value');

    $('#' + hashElement).attr('value', $sha256(password + nonce));
    $('#' + passwordElement).attr('value', '');
}

但是 Javascript 控制台给了我同样的错误。我在 js 控制台上进行了 forrowing 测试:

$('#password').text() “” $('#password').val() “123esda432” $('#password').attr('value') "123esda432"

这表明密码不仅有一个值,而且有一个 attr() 属性,但是一旦我单击提交按钮,我就会收到相同的错误“未捕获的类型错误:对象 #password 没有方法‘attr’ getPasswordHashLogin.js:3 (匿名功能)登录:45 点击”

¿ 发生了什么事? @_@.

【问题讨论】:

  • 是的,我在 _Layout 视图上设置了以下代码: @ViewBag.Title @RenderSection("ExtraHeaders", false);

标签: jquery asp.net-mvc-3


【解决方案1】:

您缺少$ 前缀。

var password = $('#' + passwordElement).attr('value');
var nonce = $('#' + nonceElement).attr('value');}

另外,你不应该需要attr('value');

.val() 应该也能正常工作。

【讨论】:

  • 我不敢相信我错过了 $,我觉得很愚蠢:$。但是在我修复之后发生了一些奇怪的事情,我一直在猜测同样的错误:/。
  • @Q_ro,你确定这是同一行上的完全相同的错误吗?或者它是在不同的行,不同的变量等。我没有 SHA256 脚本,但你的代码的其余部分似乎没问题。
  • 是的,同样的错误在同一行(第3行:这一行“var password = ('#' + passwordElement).attr('value');”)。
  • 好的,我修复了它,我很奇怪,但它是过去发生在我身上的一个错误,似乎视觉工作室没有将更改保存到 .js,所以即使是我添加了 $ 前缀,然后运行时的 .js 似乎丢失了,所以我不得不重新启动并再次添加它们,现在它就像一个魅力:),谢谢,很抱歉打扰这样一个愚蠢的问题 :$.
猜你喜欢
  • 1970-01-01
  • 2014-05-22
  • 2011-12-20
  • 2013-03-10
  • 1970-01-01
  • 2013-06-03
  • 2012-05-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多