jquery 表单验证函数未按预期运行

发布于 2024-12-21 09:33:42 字数 2435 浏览 2 评论 0原文

我注意到,当我没有任何验证消息表明存在验证错误时,我的代码的行为就像存在验证错误一样。

这是我的 jquery click 函数,如果表单经过验证,我想在其中进行 ajax 调用:

  $("#otherFavContainer").on("click", ".btnAddSongTilesToGenre", function (e) {
        var name = $('#youTubeNameTxt').val();
        var link = $('#youTubeLinkTxt').val();
        var len = link.length;
        var substr = link.substr(31, len - 31);
        var container = $(this).parent().parent().find(".actualTilesContainer");
        $(container).slideDown();
        var genreId = $(this).attr("name");
        $("#hiddenRank").val(genreId);
        $("#AddTopTenFavForm").validate().form();

        if ($("#AddTopTenFavForm").valid()) {

            $.ajax({
                beforeSend: function () { ShowAjaxLoader(); },
                url: "/Home/AddSong",
                type: "POST",
                data: $("#AddTopTenFavForm").serialize(),
                success: function (data) { HideAjaxLoader(), ShowMsg("Song Added Successfully"), $(container).find('ul').append('<li><a class="savedLinks" href="#" name="' + substr + '" >' + name + '</a> <span name= ' + data + ' class="btnDeleteSong dontDoAnything">x</span></li>'); },
                error: function () { HideAjaxLoader(), ShowMsg("Song could not be added, please try again") }
            });


            $('#youTubeLinkTxt').val('');
            $('#youTubeNameTxt').val('');

        }
        else {
            alert("notValid");
        }

        if ($(e.target).hasClass("dontDoAnything")) {
            e.stopPropagation();
            return false;
        }
    });

在 if 语句中,代码始终转到显示警报消息框的 else 部分。 我没有任何验证错误,因为没有出现验证消息。

这是我的验证逻辑:

 namespace yplaylist.Models
 {
[MetadataType(typeof(TopTenFav_Validation))]
public partial class TopTenFav
{

}
public class TopTenFav_Validation
{

[RegularExpression("http://www.youtube.com/watch\\?v=.*", ErrorMessage = "Youtube Link must begin with: http://www.youtube.com/watch?v= ")]
[Required(ErrorMessage = "Youtube link is Required")]
[StringLength(100, ErrorMessage="Song Title cannot exceed 100 characters")]
public string YoutubeLink { get; set; }

[StringLength(100, ErrorMessage = "Youtube link cannot exceed 100 characters")]
[Required(ErrorMessage = "Song title is Required")]
public string Title { get; set; }
}

}

我仔细检查是否以正确的格式将数据输入到文本框中,一切似乎都正常,但由于某些奇怪的原因我的表单仍然无效,请帮忙。谢谢

I have noticed that when I do not have any validation messages indicating that there is a validation error my code is behaving as if there were validation errors.

Here is my jquery click function and inside it I want to make an ajax call if the form is validated:

  $("#otherFavContainer").on("click", ".btnAddSongTilesToGenre", function (e) {
        var name = $('#youTubeNameTxt').val();
        var link = $('#youTubeLinkTxt').val();
        var len = link.length;
        var substr = link.substr(31, len - 31);
        var container = $(this).parent().parent().find(".actualTilesContainer");
        $(container).slideDown();
        var genreId = $(this).attr("name");
        $("#hiddenRank").val(genreId);
        $("#AddTopTenFavForm").validate().form();

        if ($("#AddTopTenFavForm").valid()) {

            $.ajax({
                beforeSend: function () { ShowAjaxLoader(); },
                url: "/Home/AddSong",
                type: "POST",
                data: $("#AddTopTenFavForm").serialize(),
                success: function (data) { HideAjaxLoader(), ShowMsg("Song Added Successfully"), $(container).find('ul').append('<li><a class="savedLinks" href="#" name="' + substr + '" >' + name + '</a> <span name= ' + data + ' class="btnDeleteSong dontDoAnything">x</span></li>'); },
                error: function () { HideAjaxLoader(), ShowMsg("Song could not be added, please try again") }
            });


            $('#youTubeLinkTxt').val('');
            $('#youTubeNameTxt').val('');

        }
        else {
            alert("notValid");
        }

        if ($(e.target).hasClass("dontDoAnything")) {
            e.stopPropagation();
            return false;
        }
    });

In the if statement the code always goes to the else part displaying the alert message box.
I do not have any validation errors since no validation message appears.

Here is my validation logic:

 namespace yplaylist.Models
 {
[MetadataType(typeof(TopTenFav_Validation))]
public partial class TopTenFav
{

}
public class TopTenFav_Validation
{

[RegularExpression("http://www.youtube.com/watch\\?v=.*", ErrorMessage = "Youtube Link must begin with: http://www.youtube.com/watch?v= ")]
[Required(ErrorMessage = "Youtube link is Required")]
[StringLength(100, ErrorMessage="Song Title cannot exceed 100 characters")]
public string YoutubeLink { get; set; }

[StringLength(100, ErrorMessage = "Youtube link cannot exceed 100 characters")]
[Required(ErrorMessage = "Song title is Required")]
public string Title { get; set; }
}

}

I doublecheck that I input data in a correct format into my textboxes and everything seems ok but my form is still not valid for some strange reason, please help. Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无妨# 2024-12-28 09:33:42

检查 $("#AddTopTenFavForm").valid() 的输出以查看它返回的内容。

Check the output of $("#AddTopTenFavForm").valid() to see what it returns.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文