4

クライアント側の控えめな検証を使用するASP.NETMVCログインフォームがあります。

私のログインモデルには、属性を持つUserNameがあり[Required]ます。入力するユーザー名のほとんどはメールアドレスになるので、タッチデバイスでは、メールに適したキーボードを表示したいと思います。だから私は、次のように設定type="email"しました:<input>

@Html.TextBoxFor(m => m.UserName, new { type = "email" })

今、私は電子メールアドレスを検証したくありません(非電子メールのユーザー名が有効であるため)が、どういうわけか、私は[Required]属性を持っているので、デフォルトのjquery.validate電子メール検証も開始されます。有効なメールアドレスのエラーを入力してください。

必須フィールドの検証を維持しながら、これを防ぐ方法はありますか?

4

2 に答える 2

4

解決策は非常に単純であることが判明しました。

$('#loginform').data("validator").settings.rules["UserName"].email = false;

入力フィールドは、(jquery.validate.js からの) 複数のルール セットを使用して検証されます。

    var data = $.validator.normalizeRules(
    $.extend(
        {},
        $.validator.metadataRules(element),
        $.validator.classRules(element),
        $.validator.attributeRules(element),
        $.validator.staticRules(element)
    ), element);

これらattributeRulesが原因で電子メールの検証がアクティブになりますが、優先されるstaticRulesため、電子メールの検証は上記の割り当てで非アクティブ化されます。

于 2012-11-29T14:25:22.897 に答える
0

ばかげた提案かもしれませんが、 [Required] 属性を削除して、アクション後のコントローラーで処理するのはどうですか? :)

于 2012-11-29T21:42:51.060 に答える