jquery上的密码文本框值

时间:2012-02-27 23:15:30

标签: jquery asp.net-mvc-3

我有一个奇怪的问题,我一直在跟踪来自Matt Blagden的youtube tutrial,以寻求学习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控制台不断给我以下错误:

“未捕获的TypeError:对象#password没有方法'attr' getPasswordHashLogin.js:3 (匿名函数)登录:43 的onclick“

这是我的观看代码:

@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测试:

$( '#密码')。文本() “” $( '#密码')。VAL() “123esda432” $( '#密码')。ATTR( '值') “123esda432”

这表明密码不仅有值,而且还有attr()属性,但是一旦我点击提交按钮,我就会得到相同的错误“Uncaught TypeError:Object #password没有方法'attr' getPasswordHashLogin.js:3 (匿名函数)登录:45 的onclick“

¿发生什么事了? @ _ @

1 个答案:

答案 0 :(得分:4)

您错过了$前缀。

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

此外,您不应该需要attr('value');

.val()也可以正常工作。