jquery提交表单和查询字符串问题



我在表单页面的查询字符串中有一些值。当我使用提交按钮提交表单时,我可以自己获得查询字符串值,但当我使用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/

相关内容

  • 没有找到相关文章

最新更新