我正在使用ASP.NET MVC 3中新的不显眼的验证功能验证表单.
因此,我没有编写代码来设置jQuery验证以开始验证我的表单.这一切都是通过加载jQuery.validate.unobtrusive.js库来完成的.
不幸的是,我需要打个招呼'你确定吗?' 表单有效但在提交之前的消息框.使用jQuery验证,你会在初始化时添加选项handleSubmit:
$("#my_form").validate({
rules: {
field1: "required",
field1: {email: true },
field2: "required"
},
submitHandler: function(form) {
if(confirm('Are you sure?')) {
form.submit();
}
}
});
Run Code Online (Sandbox Code Playgroud)
但是在使用不显眼的库时,您不需要初始化.
在这种情况下,我可以在哪里/如何添加提交处理程序?
谢谢
我正在为我的一个应用程序编写一个全局错误处理"模块".
我想要的一个功能是能够使用Try {} Catch {}块轻松包装函数,以便对该函数的所有调用将自动具有将调用我的全局日志记录方法的错误处理代码.(避免使用try/catch块在任何地方污染代码).
然而,这稍微超出了我对Javascript,.call和.apply方法以及"this"关键字的低级功能的理解.
我根据Prototype的Function.wrap方法编写了这段代码:
Object.extend(Function.prototype, {
TryCatchWrap: function() {
var __method = this;
return function() {
try { __method.apply(this, arguments) } catch(ex) { ErrorHandler.Exception(ex); }
}
}
});
Run Code Online (Sandbox Code Playgroud)
使用方式如下:
function DoSomething(a, b, c, d) {
document.write(a + b + c)
alert(1/e);
}
var fn2 = DoSomething.TryCatchWrap();
fn2(1, 2, 3, 4);
Run Code Online (Sandbox Code Playgroud)
该代码完美无缺.它打印出6,然后调用我的全局错误处理程序.
我的问题是......当我正在包装的函数在一个对象中时它是否会破坏某些东西,它会使用"this"运算符?我有点担心,因为我打电话.在那里传递一些东西,我担心这可能会破坏一些东西.
我使用jQuery Validate有以下代码.
$("#register").validate({
debug: true,
errorClass:'error',
validClass:'success',
errorElement:'span',
highlight: function (element, errorClass, validClass) {
$(element).parents("div.control-group")
.addClass(errorClass)
.removeClass(validClass);
},
unhighlight: function (element, errorClass, validClass) {
$(element).parents(".error")
.removeClass(errorClass)
.addClass(validClass);
}
});
Run Code Online (Sandbox Code Playgroud)
有没有办法将一个类添加到errorElement,'span',以便它...:
<span class="help-inline error">Message</span>
Run Code Online (Sandbox Code Playgroud) 如果我有一个任意函数myFunc,那么我的目标是用一个在执行代码之前和之后运行代码的包装调用替换这个函数,例如
// note: psuedo-javascript
var beforeExecute = function() { ... }
var afterExecute = function() { ... }
myFunc = wrap(myFunc, beforeExecute, afterExecute);
Run Code Online (Sandbox Code Playgroud)
但是,我没有所需wrap功能的实现.这样的jQuery中是否存在任何东西(我通过文档很好看但却看不到任何东西)?或者有人知道这个的一个很好的实现,因为我怀疑有一堆边缘情况,如果我自己尝试写,我会想念?
(顺便说一句 - 这样做的原因是要做一些功能的自动检测,因为我们在Javascript剖析器等不可用的封闭设备上做了很多工作.如果有比这更好的方法那么我会很感激这些方面的答案太.)
我有一个TextBox输入元素,具有RequiredFieldValidator,如下所示:
<div>
<label>First name</label>
<asp:RequiredFieldValidator ID="RequiredFieldValidatorFirstname" runat="server" ErrorMessage="Required" ControlToValidate="TextBoxFirstname"></asp:RequiredFieldValidator>
<asp:TextBox ID="TextBoxFirstname" runat="server"></asp:TextBox>
</div>
Run Code Online (Sandbox Code Playgroud)
当提交时TextBox为空时,我想将类'form-error'添加到父Div:
<div class="form-error">
<label>First name</label>
<asp:RequiredFieldValidator ID="RequiredFieldValidatorFirstname" runat="server" ErrorMessage="Required" ControlToValidate="TextBoxFirstname"></asp:RequiredFieldValidator>
<asp:TextBox ID="TextBoxFirstname" runat="server"></asp:TextBox>
</div>
Run Code Online (Sandbox Code Playgroud)
这是可能的,如果可以的话 - 我该怎么做?
如何使用jQuery验证器validate在表单元素的父级上添加/删除类名(例如),<li>以便通过仅设置一个类名来设置与该元素相关的所有内容?
标记是
<li class="validate">
<label for="product">Product of interest <abbr title="Required field">*</abbr></label>
<input id="product" type="text" name="product" value="" placeholder="e.g. school bench" class="required" minlength="2">
<!-- Hidden by CSS unless parent has 'validate' class -->
<label for="product" class="description">Please name a product.</label>
</li>
Run Code Online (Sandbox Code Playgroud)
而默认的jQuery是
$("#commentForm").validate();
Run Code Online (Sandbox Code Playgroud) jquery ×4
javascript ×2
validation ×2
apply ×1
asp.net ×1
css ×1
function ×1
try-catch ×1
wrapper ×1