0

私は、検証エラーがあることを示す検証メッセージが表示されないとき、私のコードは検証エラーがあるかのように動作していることに気付きました。ここでjquery form validate関数が期待どおりに動作しない

私のjqueryのクリック機能であり、内部の私は、フォームが検証された場合に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文。 検証メッセージが表示されないため、検証エラーはありません。ここで

は私の検証ロジックです:

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正しい形式で入力データがOKと思われるが、私のフォームはいくつかの奇妙な理由でまだ有効ではないことをdoublecheck 、 助けてください。ありがとう

答えて

0

$("#AddTopTenFavForm").valid()の出力を確認してください。

+0

出力を確認するにはどうすればよいですか? –

+0

アラートはそれを行うための最も単純で汚い方法です。 FirebugプラグインをFirefoxまたはChrome用に使用している場合は、コンソールを開いて確認できます。 if(window.console) window.console.log($( "#AddTopTenFavForm")。valid()) –

関連する問題