2013-04-29 5 views
0

У меня возникли проблемы с диалогом JQuery, который, вероятно, прямо передо мной, но я не могу понять ....hide() не работает после диалога postaback

Диалог работает отлично. Он показывает поля и отправляет информацию, и, если это так, возвращает подтверждение. Моя проблема в том, что когда я инициализирую его, я говорю ему, чтобы скрыть div внутри if, и это так. При открытии div нет, но если я попытаюсь отправить информацию, и она вернет сообщение проверки, оно отобразит div.

Вот это JS, которая вызывает диалоговое окно:

$(function() { 
$('.openDialog').click(function() { 
    $.ajax({ 
     url: this.href, 
     type: 'GET', 
     cache: false, 
     data: { idUsuario: $('#idUsuario').val() }, 
     success: function (result) { 
      $('#result').html(result).dialog('open'); 
      $('#formButtom').hide(); 
     } 
    }); 
    return false; 
}); 

$('#result').dialog({ 
    autoOpen: false, 
    modal: true, 
    show: { effect: "drop", direction: "up" }, 
    dialogClass: "dialog", 
    width: 400, 
    resizable: false, 
    position: "center", 
    buttons: { 
     "Confirmar": function() { 
      $("form").submit(); 
     }, 
     "Cancelar":function() { $('#result').dialog('close'); }    
    }   
});  
}); 
function dialogSucces(result) { 
if (result.cadastro) { 
    $('#result').dialog('close');   
    window.location.href = '/usuario/index'; 
} else { 
    $('#result').html(result); 
} 
} 

и вот HTML:

<form id="createUsuarioForm"> 
    Nome 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.Nome)<br /> 
      @Html.ValidationMessageFor(model => model.Nome, String.Empty, new { @class = "text-error"}) 
     </div> 
    <br /> 
    E-mail/Login 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.Login)<br /> 
      @Html.ValidationMessageFor(model => model.Login, String.Empty, new { @class = "text-error"}) 
     </div> 
    <br /> 
    <div id="formButtom" class="row demo-row"> 
     <div class="span2"> 
      <input type="submit" value="Confirmar" class="btn btn-primary" /> 
     </div> 
     <div class="span2"> 
      @Html.ActionLink("Cancelar", "Index", "Usuario", new { @class = "btn btn-primary" }) 
     </div> 
    </div> 
</form> 

Я видел этот пост: jQuery Show/Hide not working after postback и пытался делать это в функции, но он не работает:

$(function() { 
$('.openDialog').click(function() { 
    $.ajax({ 
     url: this.href, 
     type: 'GET', 
     cache: false, 
     data: { idUsuario: $('#idUsuario').val() }, 
     success: function (result) { 
      $('#result').html(result).dialog('open'); 
      $('#formButtom').hide(); 
     } 
    }); 
    return false; 
    if (this.isPostback) { $('#formButtom').hide(); }; 
}); 

Кто-нибудь знает, что я делаю неправильно?

ответ

0

Вы не показали, как работает ваша функция dialogSuccess, но я полагаю, что она также выполняется в случае ошибки формы. Если это так, вы должны добавить строку в свой оператор if else. Например:

function dialogSucces(result) { 
    if (result.cadastro) { 
    $('#result').dialog('close');   
    window.location.href = '/usuario/index'; 
    } else { 
    $('#result').html(result); 
    $('#formButtom').hide(); // once defected form rendered again, 
          // div hide directive should be launched again too 
    } 
} 
+0

Большое спасибо. Он работает нормально. – RaianaLadeira

Смежные вопросы