10

ユーザーがajaxパーシャルビューであるサインアップフォームの送信ボタンをダブルクリックしないようにするにはどうすればよいですか?

これはすでに尋ねられていたので、私は尋ねることを残念に思います。どこを検索しても、明確に機能する答えが見つかりません。ボタンを無効にすると、送信できなくなります。var javascript clickcount + alert+return_falseを使用してもリセットされません。

環境:asp.net mvc3

表示: フォームにオンロードが表示されます:@RenderPage("_SignupForm.cshtml")

使用して提出:

@using (Ajax.BeginForm("Index", "Signup", null,
     new AjaxOptions
                {
                    UpdateTargetId = "signupForm", 
                    InsertionMode = InsertionMode.Replace, 
                    HttpMethod = "POST",
                    LoadingElementId="progress"
                }
     ))

コントロールの送信:<input type="submit" value="Sign up" />

SignupController:

public ActionResult Index()
{
    return View();
}

[HttpPost]
public ActionResult Index(SignupModel formvalues)
{
    Thread.Sleep(5000);

    string errors = "";
    if (TryValidateModel(formvalues))
    {
        errors = SignupAPI.Signup(formvalues); //includes custom validation
    }

    if (ModelState.IsValid == false || string.IsNullOrEmpty(errors) == false)
    {
        ViewBag.Errors = errors;
        return PartialView("_SignupForm", formvalues);
    }
    else
        return Redirect(string.Concat("http://localhost/welcome"));
}
4

2 に答える 2

18

次のスクリプトを試してください。

$('form').submit(function () {
    if ($(this).valid()) {
        $(':submit', this).attr('disabled', 'disabled');
    }
});

submitフォームがDOM内の新しいコンテンツに置き換えられたとき、または2回目に機能しなくなったときにイベントを再アタッチするために、AJAXリクエストの成功コールバックでも必ず実行してください。

于 2011-06-22T05:58:18.763 に答える
0

更新:onclickがtrueを返さなかったため、送信が機能していませんでした

<input type="submit" value="Sign Up" onclick="this.disabled = true; return true;"/>

これによりボタンが無効になり、ボタンを2回クリックしても機能しません

于 2011-06-22T04:29:14.530 に答える