0

これはよくある問題です。私はこのサイトや他の場所で提案されているさまざまなソリューションを見てきましたが、私の状況で動作するものには当てられません。ここでjQuery UIのダイアログボックスのバリデーション

は私のスクリプトです:

$(function() { 

    $('a.editPersonLink').live("click", function (event) { 
     loadDialog(this, event, '#personList'); 
     $.validator.unobtrusive.parse('#editPersonContainer'); 
    }); 

    $(".deleteButton").live("click", function(e) { 
     e.preventDefault(); 
     var $btn = $(this); 
     var $msg = $(this).attr("title"); 

     confirmDelete($msg, 
      function() { 
       deleteRow($btn, $target); 
      }); 
    }); 

}); 

function loadDialog(tag, event, target) { 
    event.preventDefault(); 
    var $loading = $('<img src="../../Content/images/ajaxLoading.gif" alt="loading" class="ui-loading-icon">'); 
    var $url = $(tag).attr('href'); 
    var $title = $(tag).attr('title'); 
    var $dialog = $('<div></div>'); 
    $dialog.empty(); 
    $dialog 
     .append($loading) 
     .load($url) 
     .dialog({ 
      autoOpen: false 
      ,title: $title 
      ,width: 800 
      ,modal: true 
      ,minHeight: 200 
      ,show: 'slide' 
      ,hide: 'clip' 
     }); 

    $dialog.dialog("option", "buttons", { 
     "Save": function() { 
      var dlg = $(this); 
      $.ajax({ 
       url: $url, 
       type: 'POST', 
       data: $("#formData").serialize(), 
       success: function (response) { 
        $(target).html(response); 
        dlg.dialog('close'); 
        dlg.empty(); 
        $("#ajaxResult").hide().html('Record saved').fadeIn(300, function() { 
         var e = this; 
         setTimeout(function() { $(e).fadeOut(400); }, 2500); 
        }); 
       }, 
       error: function (xhr) { 
        if (xhr.status == 400) 
         dlg.html(xhr.responseText, xhr.status);  /* display validation errors in edit dialog */ 
        else 
         displayError(xhr.responseText, xhr.status); /* display other errors in separate dialog */ 

       } 
      }); 
     }, 
     "Cancel": function() { 
      $(this).dialog("close"); 
      $(this).empty(); 
     } 
    }); 

    $dialog.dialog('open'); 
}; 

右まで私が声明を経由して、ダイアログ上の部分図から検証を認識するためのフォームを引き起こすしようとしています上部付近に:

$.validator.unobtrusive.parse('#editPersonContainer'); 

editPersonContainerは、ダイアログにロードされたパーシャルビューのデータを含むdivの名前です。

最終行は、検証が認識されないことです。 validator.unobtrusive.parseの呼び出しを間違った場所にしていますか、ここに何か他のものがありませんか?

+0

上の完全なプロジェクトとの記事がで '

'タグがあることを確認してくださいjquiダイアログ?レンダリングされた ''要素はどのように見えますか?彼らは 'data-val =" true "'属性を持っていますか? – danludwig

答えて

1

私は技術を使用することが私のスクリプトを変更することになったがhere

検証が今の私のjQuery UIのダイアログ上で動作を説明しました。

+0

この問題の解決策として上に投稿したリンクに関して、複数回呼び出されたときにダイアログが動作するようにするには、$ thisの呼び出しで追加する必要があったことに注意してください。)$の呼び出しの後に.empty() (this)).Dialog( 'Close') - $(dialog).dialog( 'close')を呼び出した後の$(dialog).empty()の呼び出し。これがなければ、呼び出しページが更新されずにダイアログが2回呼び出された場合、大きな問題が発生しました。 – daveywc

0

こんにちは私は同じことを探していたのであなたの質問に来ました。

私はクライアント側で検証するAJAX呼び出し前にこれを含める:

if (ModelState.IsValid) {} 

私は

Validation client/Server JqueryUI Dialog

関連する問題