Mvc 验证和加载器

Posted

技术标签:

【中文标题】Mvc 验证和加载器【英文标题】:Mvc validation and loader 【发布时间】:2017-04-24 13:05:24 【问题描述】:

在 MVC 视图中的表单发布方法中, 如果验证触发,则加载程序不应出现并仅显示验证 否则不会触发验证,然后加载程序应该来保存数据。

我尝试过的:

javascript 中的表单提交上放置加载器并禁用按钮。

$("#frmContact").submit(function (e) 
        $(".loading").css("display", "inline");
    );

1) 加载器:问题是如果验证触发,加载器也会伴随验证,然后需要重新加载页面并输入数据。

2) 禁用提交按钮:如果我在单击时禁用提交按钮并且如果验证触发,那么在按钮之后仍然是禁用而不是启用。因此,如果存在验证,则启用该按钮,如果验证未触发,则禁用该按钮。

所有这些都是为了避免重复条目,就像按钮启用然后如果用户点击提交。

【问题讨论】:

你的意思是如果没有验证错误就应该提交表单,如果有错误怎么办? 是的,如果没有验证错误,则应提交表单,加载程序应在处理过程中显示,但如果存在验证错误,加载程序不应显示,仅显示验证。跨度> 不清楚您的期望。提交后,您立即离开页面。你的$(".loading").css("display", "inline"); 有什么意义 - 充其量它只会显示一瞬间 嗨,斯蒂芬,我所期待的是,如果显示模型验证,则加载程序不应该出现,只显示验证消息,如果没有验证消息,那么加载程序应该出现。上面的代码只是我这样显示加载器的示例。当我提交时,加载器正在显示,我不会立即离开页面。将记录保存到数据库后,我就离开了。 您不理解我的评论吗?提交后立即离开当前页面-您的“加载程序”毫无意义 【参考方案1】:

你可以这样做

html

<div id="ajax-loader" style="display:none;">
     <img src="<?php echo $loaderSrc; ?>" style="height: 200px;width: 200px;">
</div>

<input type="submit" id = "btnSubmit" value="Submit" name="yt0" onclick="return validateForm();">

在脚本中:(在这里您可以更改字段...我正在展示我的示例之一)

var error_flag = true;
var error_required = true;

$('#btnSubmit').click(function(e)
    e.preventDefault();
    if(error_flag && error_required)
            $("#ajax-loader").css("display", "block");
           $('form#login-form').submit();
    
);

function validateForm()

var user_pass = document.getElementById('LoginForm[user_pass]').value;
var dob = document.getElementById('LoginForm_dob').value;
var re_pass = document.getElementById('re_pass').value;
var user_name = document.getElementById('LoginForm[user_name]').value;
var email = document.getElementById('LoginForm[email]').value;
var tnc = document.getElementById('checkbox1').checked;
// alert(tnc);
var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]0,66)\.([a-z]2,6(?:\.[a-z]2)?)$/i;

if(user_name == '')
  validate('LoginForm[user_name]','Nick name is required.');
else if(email == '')
  removeerror('LoginForm[user_name]');
  validate('LoginForm[email]','Email is required.');
else if(!filter.test(email))
  removeerror('LoginForm[email]');
  validate('LoginForm[email]','Please enter valid email.');
else if(user_pass == '')
  // removeerror('LoginForm[email]');
  validate('LoginForm[user_pass]','Password is required.');
else if(user_pass.length < 6)
  removeerror('LoginForm[user_pass]');
  validate('LoginForm[user_pass]','Min length should be 6.');
else if(re_pass == '')
  removeerror('LoginForm[user_pass]');
  validate('re_pass','Repeat password is required.');
else if(user_pass != re_pass)
  removeerror('re_pass');
  validate('re_pass','Password does not match.');
else if(dob == '')
  removeerror('re_pass');
  validate('LoginForm_dob','Dob is required.');
else
  if(tnc == false)
    document.getElementById('tnc_check').innerHTML = 'Please agree Terms and Condition' ;
    document.getElementById("tnc_check").style.color = "red";
    error_required = false;
  else
    error_required = true;
   document.getElementById("tnc_check").style.display = "none";
   removeerror('LoginForm_dob');
  


function validate(id,msg)
     document.getElementById(id).style.border='4px solid red';
     document.getElementById(id).value = "";
     document.getElementById(id).placeholder = msg;
     error_required = false;

function removeerror(id)
     document.getElementById(id).style.border='none';
     error_required = true;

【讨论】:

这和asp.net-mvc有什么关系!【参考方案2】:

使用 javascript 检查表单提交或按钮提交事件的验证。

 if($('#MyForms').valid())
 
    // Do something (Valid)
 
 else
 
   // Do something (invalid)
 

【讨论】:

是的,这就是答案。【参考方案3】:

答案很简单。在表单发布事件中输入有效。一切都是你想要的。

$("#frm").submit(function (e) 
        if ($(this).valid()) 
            $(".loading").css("display", "inline");
        
    );

【讨论】:

以上是关于Mvc 验证和加载器的主要内容,如果未能解决你的问题,请参考以下文章

Java内存管理-掌握虚拟机类加载器

为网站和移动应用程序混合 MVC 5 + WEB API 2 身份验证

asp.net MVC Razor 文本框控件验证

使用spring MVC重新加载弹出页面

带有 ListView Asynctask 的多下载器

ASP.NET MVC 2 使用 jQuery 加载部分视图 - 无客户端验证