我有一个阵列tempArray = ["Kathmandu","Pokhara","Dharan"].为了确保"博卡拉"在tempArry中,我必须使用循环并检查tempArray的每个元素.
有没有办法实现Ruby,Array.include?所以我不需要使用循环?
所以我使用以下代码动态地向我的页面添加了一个验证器:
$.validator.unobtrusive.adapters.addBool('zipcode', 'validate_zipcode');
Run Code Online (Sandbox Code Playgroud)
有没有办法动态删除它?就像是:
$.validator.unobtrusive.adapters.removeBool('zipcode', 'validate_zipcode');
Run Code Online (Sandbox Code Playgroud)
我在Google上搜索过类似的内容,但找不到任何对remove方法的引用.
在.NET MVC项目中使用jQuery不显眼的验证,似乎工作正常.我正在尝试在字段正确验证(客户端和/或远程)时显示绿色复选标记.
这是一个示例字段声明:
<div class="clearfix">
@Html.LabelFor(model => model.Address1, "Street")
<div class="input">
@Html.TextBoxFor(model => model.Address1, new { @class = "xlarge", @maxlength = "100", @placeholder = "e.g. 123 Main St" })
<span class="help-message">
@Html.ValidationMessageFor(model => model.Address1)
<span class="isaok">Looks great.</span>
</span>
<span class="help-block">Enter the street.</span>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我想要做的是在"span.isaok"中添加一个"有效"类,后者又有一个背景图像的复选标记.
我尝试使用高亮/不亮:
$.validator.setDefaults({
onkeyup: false,
highlight: function (element, errorClass, validClass) {
$(element).addClass(errorClass).removeClass(validClass);
$(element.form).find("label[for=" + element.id + "]").addClass("error");
$(element).parent().find("span.isaok").removeClass("active");
},
unhighlight: function (element, errorClass, validClass) {
$(element).removeClass(errorClass).addClass(validClass);
$(element.form).find("label[for=" + element.id + "]").removeClass("error");
if ($(element).val().length > 0) { …Run Code Online (Sandbox Code Playgroud) 我在MVC 3应用程序中创建了一个局部视图.此视图具有如下强类型模型:
public class ProductViewModel
{
[Required, Display(Name = "Product price")]
public decimal? ProductPrice
{
get;
set;
} ...
}
Run Code Online (Sandbox Code Playgroud)
在我的动作方法中,我像这样调用PartialView方法
PartialView("ProductViewModel", products[0]);
Run Code Online (Sandbox Code Playgroud)
但是在页面上我看不到验证逻辑的任何标记,如果页面上有任何错误,则没有任何反应.如果我将此局部视图用作编辑器模板,则可以正常工作.任何帮助表示赞赏.
编辑:更具体地说,我有一个HTML表单,我想通过ajax更新添加标记(如果用户点击一个按钮,我想在该表单中添加新标记).如果我静态地包含这些控件,我的意思是如果我在页面加载时渲染它们,验证工作,但如果我通过ajax调用向该表单添加控件,则不会为这些控件插入验证标记.我的局部视图看起来像这样:
@Html.LabelFor(x => x.ProductPrice)
@Html.TextBoxFor(x => x.ProductPrice)
@Html.ValidationMessageFor(x => x.ProductPrice)
Run Code Online (Sandbox Code Playgroud)
我的表单看起来像这样:
@using (Html.BeginForm())
{
<div id="div_Products">
@Html.EditorFor(x => x)
</div>
<input type="submit" value="Compare" />
}
Run Code Online (Sandbox Code Playgroud)
上面的代码效果很好,验证工作正常.在服务器端,我调用一个看起来像这样的动作方法:
[HttpPost]
public ActionResult InsertProduct()
{
var newProductVM = new ProductViewModel{ ProductPrice = 789 };
return PartialView("~/Views/Nutrition/EditorTemplates/ProductViewModel.cshtml", newProductVM);
}
Run Code Online (Sandbox Code Playgroud)
我发现MVC引擎只有在发现控件位于表单控件内时才会插入那些验证标记.当我尝试通过ajax调用更新我的表单控件时,MVC无法知道它们将被放置在表单元素中,这就是为什么它不会为它们发出任何验证逻辑,我想.
validation unobtrusive-javascript data-annotations asp.net-mvc-3
我希望能够(从Javascript)导航,就像点击链接一样(但不一定是点击链接时 - 可能是另一个动作).
我知道window.location.href = '...';和window.location.replace('...');,但这些方法不允许用户通过按住Cmd的(OS X)或Ctrl键指定新窗口,新标签,等等.我希望能够在不手动检查这些键的状态的情况下完成.
我试着通过以下教程来实现这个目的:
和轨道广播
http://railscasts.com/episodes/205-unobtrusive-javascript
..在这两种情况下,我都有同样的问题.控制器没有渲染.js模板(它回退到.html),因为请求标头没有像它应该的那样请求javascript.
我正在使用来自github和jquery 1.4.4的jquery ujs
"data-remote = true"属性正在提供给它应该是的形式.但由于某种原因,这不是修改请求.
如果我切换到prototype.js它可以工作(使用rails中的默认prototype.js和rails.js).
我正在使用rails 3.0.0
任何建议赞赏.
简单的问题...是否可以在类型文件的输入上使用客户端MVC 3验证?
解释一下:MVC 3使用IClientValidatable和不显眼的javascript进行模型验证,允许您在服务器端编写验证,并使用Microsoft的插件使用jquery validate渲染客户端.要创建属性,请在下面添加属性
[Required]
public HttpPostedFileBase CvFile {get; set;}
Run Code Online (Sandbox Code Playgroud)
只要客户端val和不显眼的javascript在配置中打开,这应该在客户端上激活.
但是HttpPostedFileBase(即<input type="file" name="Model.CvFile" />)不会在客户端运行.
任何想法如何实现这一点保持与服务器端验证的关系
validation asp.net-mvc file-io unobtrusive-javascript asp.net-mvc-3
似乎kendo的不显眼的javascript样式事件调用this在我的方法上下文中断.
假设我有一个对象Foo,实例化为bar = new Foo()
function Foo(){};
Foo.prototype.name = "Herring";
Foo.prototype.doSomething = function(e) {
alert(this.name);
};
bar = new Foo();
Run Code Online (Sandbox Code Playgroud)
然后使用数据单击附加事件
<a data-role="button" data-click="bar.doSomething">Click Me</a>
Run Code Online (Sandbox Code Playgroud)
对象上下文bar被替换(不知道为什么,因为我们有方便的element容器.)因此this.name是未定义的.
我var self = this;在对象构造函数中尝试了旧的,但它不起作用,有谁知道解决这个问题的最佳方法是什么?
因为我真的不想失去将模块包装为类的好处,所以我创建了事件调用函数包装器,然后调用适当对象上的方法.
例如,将标记连接到包装函数.
<a data-role="button" data-click="doSomething">Click Me</a>
Run Code Online (Sandbox Code Playgroud)
并且包装函数只调用object.method.
function doSomething(e){ bar.doSomething(e) };
Run Code Online (Sandbox Code Playgroud)
现在,这实现了预期的结果,但它非常可怕,从标记调用的每个事件都必须具有类似上面的代理功能.所以想象一下你有300个事件的场景......你会立刻明白为什么这很糟糕.
如果没有其他解决方案,我非常希望有.我将这个解决方法作为答案发布,但就我而言,它远非理想.
我会完全诚实,这似乎是剑道的主要架构缺陷,因为这种从标记调用事件的方法是"剑道方式".显然它无法修补,因为可能有一些代码已经处理this作为html元素的引用.
能够覆盖它,或者能够通过可以传递调用的泛型处理程序(实质上是通用代理函数)来路由这些事件调用,是可以处理它的可能方法.它也可以是kendo.对象上的简单可配置值.
如果有效,我会发布后续内容,理论上可以在通用代理中抛出事件,并让它调用正确的范围函数.
假设我们使用event属性来调用代理,然后创建一个单独的属性来传达对象/方法调用.例如.
<a data-role="button" data-click="prox" data-prox="o.eventHandler">Click Me</a>
Run Code Online (Sandbox Code Playgroud)
代理函数将从prox属性数据集中提取:
假设我有这个模型:
public class Person
{
public bool IsApproved { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
并且这个代码,我试着input用check类型渲染:
@Html.CheckBoxFor(x => x.IsApproved)
@Html.CheckBox("IsApproved")
Run Code Online (Sandbox Code Playgroud)
但是,结果是不同的:
// CheckBoxFor result
<input data-val="true" data-val-required="The IsApproved field is required." id="IsApproved" name="IsApproved" type="checkbox" value="true">
<input name="IsApproved" type="hidden" value="false">
// CheckBox result
<input id="IsApproved" name="IsApproved" type="checkbox" value="true">
<input name="IsApproved" type="hidden" value="false">
Run Code Online (Sandbox Code Playgroud)
如何以及为什么,第一个生成客户端验证的属性,而另一个没有?
更新:
交换@Html.CheckBoxFor和@Html.CheckBox的顺序后,标记元素的顺序没有改变.
我在用
asp.net mvc 3 jquery验证无阻碍的javascript.
我试图通过注释在服务器端编写所有验证,然后使用mvc 3的新功能来处理客户端.
我有一个对话框,上面有一个按钮(只是一个按钮而不是提交按钮),我想通过ajax将数据发布到服务器.
因此,当用户点击按钮时,我会执行表单提交并返回false以取消回发.
我认为这会触发验证但似乎并非如此.如何进行客户端验证触发器?
编辑
<form method="post" id="TaskFrm" action="/Controller/Action">
<input type="text" value="" name="Name" id="Name" data-val-required="Name field cannot be left blank" data-val-length-max="100" data-val-length="task cannot exceed 100 characters" data-val="true">
</form>
var $dialog = $('<div></div>').dialog(
{
width: 580,
height: 410,
resizable: false,
modal: true,
autoOpen: false,
title: 'Basic Dialog',
buttons:
{
Cancel: function ()
{
$(this).dialog('close');
},
'Create Task': function ()
{
var createSubmitFrmHandler = $(my.selectors.createFrm).live('submit', function ()
{
alert('hi');
return false;
});
createSubmitFrmHandler .validate();
var a …Run Code Online (Sandbox Code Playgroud) asp.net-mvc jquery unobtrusive-javascript jquery-validate asp.net-mvc-3
asp.net-mvc ×3
javascript ×3
jquery ×3
validation ×3
ajax ×1
c# ×1
file-io ×1
kendo-ui ×1
razor ×1
ruby ×1
this ×1