Что не так с моей JQuery проверить? - PullRequest
1 голос
/ 20 декабря 2011

Я столкнулся с самой странной ситуацией до сих пор.У меня есть форма, которая имеет два текстовых поля.У меня также есть кнопки, которые принадлежат трем различным классам, таким как .addTopTenFav, .addCurrentFav, .addOther.Я добавил логику и атрибуты проверки в мою модель Entity, и она работает, как и ожидалось, для двух моих кнопок.То есть, когда я нажимаю определенную кнопку, я делаю что-то вроде myform.validate (). Form ();и затем я проверяю, если ($ ("# myform"). valid ()), поэтому в двух моих точечных представлениях форма проверена, никаких сообщений об ошибках не появляется, и это все хорошо.НО по какой-то странной причине, когда я нажимаю кнопку .addOtherSong, оператор if, который проверяет правильность моей формы, переходит к другой части, где я помещаю простое окно предупреждения.Никаких сообщений об ошибках не появляется, я дважды проверяю, что я печатаю в текстовые поля ... и, конечно ... почему-то форма недействительна, а при нажатии других кнопок форма действительна.

Но есть еще кое-что, так чтоя пытаюсь отладить это, в браузере Google Chrome я использую консоль и набираю что-то вроде $ ("# myform"). validate (). element ("#myselect");проверять каждое текстовое поле один за другим, и он возвращает true для обоих из них, что означает, что мой ввод проверен и прошел тест, но когда я запускаю приложение и нажимаю кнопку добавления, форма не является действительной, что не так?

 $(function () {

    $(document).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;
        }
    });

    $("#otherFavContainer").on("click", ".songTilesGenreContainer", function (e) {
        var myVar = $(this).find(".actualTilesContainer");

        if ($(myVar).hasClass("minimalized")) {
            $(myVar).removeClass("minimalized").addClass("maximized").slideDown();
        }
        else {
            $(myVar).removeClass("maximized").addClass("minimalized").slideUp();
        }

    });

мои атрибуты проверки

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; }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...