验证.unobtrusive并验证jQuery库(Validate.unobtrusive and validate jQuery libraries)
我正在构建一个MVC 3应用程序,它使用标准的模型验证属性进行基本的客户端和服务器验证。 然而,我也有一个表头在标题中,并使用jQuery validate插件来执行客户端验证。
当我将不显眼的库添加到项目时,使用validate插件的标题表单无法运行并继续发布。 当不包含不显眼的库时,标头验证正常,但模型验证停止。
知道我做错了什么吗?
编辑
基本上我在标题中有一个登录表单。 我还有一个登录页面,也允许登录。 登录页面与模型绑定,但标题中的表单不是,它只是html。 两种形式都通过jQuery .ajax调用相同的Controller / Action。
我已经失去了使用.ajax方法的能力,因为我包含了不显眼的库,因此似乎没有被调用。
我得到了你所包含的代码,但是在验证完成后我仍然无法发布或执行操作。
我的标题表格是:
<form id="frmHeaderLogin" action=""> <table id="LoginBox" title="Login"> <tr> <td>UserName</td> <td><input type="text" id="Username" name="Username" /></td> </tr> <tr> <td>Password</td> <td><input type="password" id="Password" name="Password" /></td> </tr> <tr> <td colspan="2"><input type="submit" value="Login" id="btnHeaderLogin" name="btnHeaderLogin" /></td> </tr> </table> </form>
我有一个提交按钮的单击事件,它将验证客户端输入,然后在创建JSON对象作为数据参数后将其提交给服务器。 服务器的响应也是JSON对象。 此表单位于布局文件中,因为它将出现在每个页面上。
主登录页面/视图有一个简单的表单如下:
@using (Html.BeginForm("Login", "Account", FormMethod.Post, new { id = "MainLoginForm" })) { <div> <fieldset> <p style="color:Red;font-size:medium">@ViewData["Message"]</p> <legend>Login</legend> <div class="editor-label"> @Html.LabelFor(m => m.UserName, "EmailId") </div> <div class="editor-field"> @Html.TextBoxFor(m => m.UserName) @Html.ValidationMessageFor(m => m.UserName) </div> <div class="editor-label"> @Html.LabelFor(m => m.Password, "Password") </div> <div class="editor-field"> @Html.PasswordFor(m => m.Password) @Html.ValidationMessageFor(m => m.Password) </div> <p> <input type="submit" id="btnMainLogin" value="Login" /> </p> </fieldset> </div> }
这也有一个jQuery单击事件,它触发.ajax方法并将JSON对象发布到服务器,如上所述。 两个实例都返回一个JSON对象。
我想在这一点上问题可能是,我可以使用相同的模型进行标题登录,这是在布局文件中,这将允许我使用客户端和服务器验证?
以下是验证通过后我使用的submitHandler示例(使用jquery.validate)
$("#formname").validate( { // ..... // ..... submitHandler: function () { var JSONData = new Object(); $(':text, :password', $("table[id$='LoginBox']")).each(function () { JSONData[$(this).attr("id")] = $(this).val(); }); $.ajax({ type: "POST", url: "/Controller/Action", data: "{'Login': '" + JSON.stringify(JSONData) + "'}", contentType: "application/json; charset=utf-8", dataType: "json", success: function (result) { var response = $.parseJSON(result); alert("Header Login Success!"); }, error: function (xhr, status, error) { alert(xhr.statusText + " - ReadyState:" + xhr.readyState + "\n" + "Status: " + xhr.status); } }); } )};
I am building an MVC 3 application which uses the standard Model validation attributes for basic client and server validation. I however also have a form which is in the header and uses the jQuery validate plugin to perform client validation.
When I add the unobtrusive library to the project the header form which uses the validate plugin fails to run and keeps posting. When the unobtrusive library is not included the header validates fine but then the Model validation stops.
Any idea what I am doing wrong?
Edit
Basically i have a login form in the header. I also have a login page that also allows login. The login page is tied to a Model but the form in the header is not, it's just html. Both forms call the same Controller/Action via jQuery .ajax.
I have lost the ability to use the .ajax method which just doesnt seem to get called since I included the unobtrusive library.
I got the code you included to work, but then I still cant post or perform an action after validation is complete.
My header form is:
<form id="frmHeaderLogin" action=""> <table id="LoginBox" title="Login"> <tr> <td>UserName</td> <td><input type="text" id="Username" name="Username" /></td> </tr> <tr> <td>Password</td> <td><input type="password" id="Password" name="Password" /></td> </tr> <tr> <td colspan="2"><input type="submit" value="Login" id="btnHeaderLogin" name="btnHeaderLogin" /></td> </tr> </table> </form>
I have a click event for the submit button which would validate the client input and then submits this to the server after creating a JSON object as the data parameter. The response from the server is also a JSON object. This form is in a layout file as it's going to be on every page.
The main login page/view has a simple form as below:
@using (Html.BeginForm("Login", "Account", FormMethod.Post, new { id = "MainLoginForm" })) { <div> <fieldset> <p style="color:Red;font-size:medium">@ViewData["Message"]</p> <legend>Login</legend> <div class="editor-label"> @Html.LabelFor(m => m.UserName, "EmailId") </div> <div class="editor-field"> @Html.TextBoxFor(m => m.UserName) @Html.ValidationMessageFor(m => m.UserName) </div> <div class="editor-label"> @Html.LabelFor(m => m.Password, "Password") </div> <div class="editor-field"> @Html.PasswordFor(m => m.Password) @Html.ValidationMessageFor(m => m.Password) </div> <p> <input type="submit" id="btnMainLogin" value="Login" /> </p> </fieldset> </div> }
This also has a jQuery click event which fires the .ajax method and posts a JSON object to the server as above. Both instances return a JSON object.
I suppose at this point the question could be, can I use the same model for the header login which is in a layout file which would allow me to make use of the client and server validation?
The following is an example of the submitHandler that I was using after the validation passed (using jquery.validate)
$("#formname").validate( { // ..... // ..... submitHandler: function () { var JSONData = new Object(); $(':text, :password', $("table[id$='LoginBox']")).each(function () { JSONData[$(this).attr("id")] = $(this).val(); }); $.ajax({ type: "POST", url: "/Controller/Action", data: "{'Login': '" + JSON.stringify(JSONData) + "'}", contentType: "application/json; charset=utf-8", dataType: "json", success: function (result) { var response = $.parseJSON(result); alert("Header Login Success!"); }, error: function (xhr, status, error) { alert(xhr.statusText + " - ReadyState:" + xhr.readyState + "\n" + "Status: " + xhr.status); } }); } )};
原文:https://stackoverflow.com/questions/11187571
最满意答案
更改uib-typeahead属性:
<input name="customers" id="customers" type="text" placeholder="enter a customer" ng-model="selectedCustomer" uib-typeahead="customer as customer.firstName for customer in customers | filter: $viewValue | limitTo:8" class="form-control" typeahead-editable="false">
这会将所选客户设置为ng-model
selectedCustomer
。Change the uib-typeahead attribute:
<input name="customers" id="customers" type="text" placeholder="enter a customer" ng-model="selectedCustomer" uib-typeahead="customer as customer.firstName for customer in customers | filter: $viewValue | limitTo:8" class="form-control" typeahead-editable="false">
This will set the selected customer to the ng-model
selectedCustomer
.
相关问答
更多-
Angular-ui模态指令(Angular-ui modal directive)[2022-06-14]
在你的模态形式中只需使用: in your modal form simply use: -
答案#1:区别在于Angular-ui是angular-ui项目的几个软件包的组合,特别是所有(或几乎所有)UI-Utils和UI-Modules,UI-Bootstrap是项目的另一部分包括以角度方式写入的几个引导组件,并且不包含在Angular-UI Bundle包中... 这里有更多信息并查看项目的所有不同包Angular UI github 回答#2正如您已经将'ui'依赖项包含在主模块的dependecys数组中那样,它将不包括ui-bootstrap,如上所述 回答#3你可以在angular-u ...
-
你要搜索的是一个内置的$state方法href() 。 你可以在这里看到一个例子 。 文件: href(stateOrName,params,options) 如何获得当前状态href? $state.href($state.current.name); 让我们有这个扩展映射(参见plunker中的详细定义) : $stateProvider. state('tabs', { url: '/tab', abstract: true,... ...
-
我将使用链接功能 myMoudule.directive('tabWrapper', function($compile) { return { restrict:'AE', replace: true, link: function(scope, element, attrs) { var html = '
'; var ... -
因为每次搜索输入时都会请求jsondata 也许这是一个问题 refresh="getData($select.search)" Because every time the search is inputted, it request the jsondata Maybe it's a problem here refresh="getData($select.search)"
-
翻译Angular-UI分页(Translate Angular-UI pagination)[2022-05-26]
而不是过度整个常量对象,你可以在run方法中修改它的属性 var app=angular.module('myapp', ['ui.bootstrap']); app.run(function(paginationConfig){ paginationConfig.firstText='MY FIRST'; paginationConfig.previousText='YOUR TEXT'; }) DEMO 在新版本的ui.bootstrap你应该使用 uibPaginationConfi ... -
你必须在angular之前导入jQuery以使它使用jQuery for angular.element(因为angular-ui使用angular.element来查找jQuery.fn.yourFunction),这里有一个工作小提琴: http://jsfiddle.net/huYQ6/6/ you have to import jQuery before angular to make it use jQuery for angular.element (because angular-ui use ...
-
angular-ui bootstrap typeahead with promise和orderBy(angular-ui bootstrap typeahead with promise and orderBy)[2023-05-09]
你编写它的方式是使一个过滤器作用于承诺本身,而不是承诺的结果。 在这种情况下,正确的方法是在JavaScript中进行实际过滤,如下所示: $scope.getStates = function(val) { return $timeout(function(){ return orderByFilter(filterFilter($scope.statesWithFlags, val), 'name', true); }, 500) }; 作为旁注: $timeout服务 ... -
使用angular-ui预先输入(Typeahead using angular-ui)[2022-04-20]
更改uib-typeahead属性:在angular-ui中确认对话框(confirm dialog in angular-ui)[2022-04-12]
我使用angular2 / typescript,但我不认为它与这类事情有很大不同。 这是我用于项目的示例。 valor-software http://valor-software.com/ng2-bootstrap/#/modals 或者使用它。 http://v4-alpha.getbootstrap.com/components/modal/ I work with angular2/typescript but i dont think it differs much with this sort ...相关文章
更多- 用jquery validate封装自己的验证库
- jquery validate 插件实例教程
- jquery validate&metadata 插件实例教程2
- jquery validate注册校验实例
- 孔浩JQuery、jqueryUI、jquery validate、comet视频教程
- jQuery的validate插件使用整理(第一部分:HelloWorld)
- jQuery的validate插件使用整理(第三部分:扩展)
- jQuery的validate插件使用整理(第二部分:基础知识)
- Hadoop的本地库(Native Libraries)介绍
- jquery 问题
最新问答
更多- 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
- 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
- OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
- 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
- codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
- 在计算机拍照在哪里进入
- 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
- No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
- 单页应用程序:页面重新加载(Single Page Application: page reload)
- 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
- System.StackOverflow错误(System.StackOverflow error)
- KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
- 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
- android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
- TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
- 企业安全培训的各项内容
- 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
- C#类名中允许哪些字符?(What characters are allowed in C# class name?)
- NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
- 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
- 将多个行和可变行移动到列(moving multiple and variable rows to columns)
- 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
- 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
- Angular $资源不会改变方法(Angular $resource doesn't change method)
- 在Angular 5中不是一个函数(is not a function in Angular 5)
- 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
- 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
- 常见的python rpc和cli接口(Common python rpc and cli interface)
- Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
- 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)