我在表单页面的查询字符串中有一些值。当我使用提交按钮提交表单时,我可以自己获得查询字符串值,但当我使用jquery提交表单时如下所示。我再也看不到查询字符串值了。我是不是搞砸了什么?
$('#PasswordResetForm').submit(function () {
if (some conditions) {
$('#PasswordResetForm').submit();
}
else {
return false;
}
});
链接是这样的:
http://websitename/Account/PasswordReset/?username=username&token=ZnsHnVh3oIOwOR2GUaGfsA2
html代码如下:
@using (Html.BeginForm("PasswordReset","Account",FormMethod.Post,new
{id="PasswordResetForm"}))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary("", new { id = "validation" })
<fieldset>
<legend ">Enter your User Name</legend>
<br />
<table id="MainTable" border="0">
<tr class="MainTr">
<td class="FirstTd">
@Html.Label("User Name")
</td>
<td class="SecondTd">
</td>
</tr>
<tr class="MainTr">
<td class="FirstTd">
New Password
</td>
<td class="SecondTd">
@Html.Password("newPassword")
</td>
</tr>
<tr class="MainTr">
<td class="FirstTd">
Confirm New Password
</td>
<td class="SecondTd">
@Html.Password("confirmNewPassword")
</td>
</tr>
<tr class="MainTr">
<td colspan="2">
<input type="submit" id="submitBt" value="Recover Password" />
</td>
</tr>
</table>
</fieldset>
}
我再也看不到服务器上的令牌了。当我使用jquery提交表单时。我使用的是mvc 4和jquery 2.0.0
试试这个
$(function()
{
function ValidateData() {
if (some conditions) {
return true;
}
else {
return false;
}
}
});
HTML更改
<input type="submit" id="submitBt" value="Recover Password" onClick="return ValidateData();" />
使用以下代码:
$('#PasswordResetForm').submit(function () {
if (some conditions) {
this.submit();
}
else {
return false;
}
});
调用$('#PasswordResetForm').submit();
再次调用相同的函数。不要将其包装为jquery对象。
保留将查询字符串设置为隐藏元素的查询字符串:
@Html.Hidden("username", Request.QueryString["username"])
@Html.Hidden("token", Request.QueryString["token"])
Querystring参数可使用JavaScript的位置对象的搜索属性,即location.search
。从那里你可以在提交功能中使用它。
例如。http://somesite.com/?querystringParam1=someVal&querystringParam2=someOtherVal
location.search
是否相等?querystringParam1=someVal&querystringParam2=someOtherVal
如果你需要类似.NET的NameValueCollection中的查询字符串,我写了一个快速的JSFiddle,http://jsfiddle.net/nickyt/NnyV2/5/
(function() {
function getQuerystringAsNameValueCollection(querystring) {
var querystringKeyValuePairs = querystring.split('&');
var querystringHashTable = {};
for (var index = 0; index < querystringKeyValuePairs.length; index++) {
var keyValue = querystringKeyValuePairs[index].split('=');
querystringHashTable[keyValue[0]] = keyValue[1];
}
}
$('#PasswordResetForm').submit(function (e) {
var querystring = getQuerystringAsNameValueCollection(location.search.substring(1));
if ("token" in querystring) { // Do more checks on the token if necessary
$('#PasswordResetForm').submit();
}
else {
e.preventDefault();
}
});
})();
$('#PasswordResetForm').submit(function (e) {
e.preventDefault();
if (some conditions) {
this.submit();
}
else {
return false;
}
});
也可以像一样使用jquery的.on
click
事件侦听器
$('#PasswordResetForm').on('click', function() {
//code here.....
});
附加知识。:)
这毫无意义:
$('#PasswordResetForm').submit(function () {
$('#PasswordResetForm').submit();
}
因为你再次提出这个问题。
您只需要返回true,即:
$('#PasswordResetForm').submit(function () {
if (cond)
return true;
return false;
}
http://api.jquery.com/submit/