标签: unobtrusive-javascript

如何实现Ruby的Array.include?在JavaScript?

我有一个阵列tempArray = ["Kathmandu","Pokhara","Dharan"].为了确保"博卡拉"在tempArry中,我必须使用循环并检查tempArray的每个元素.

有没有办法实现Ruby,Array.include?所以我不需要使用循环?

javascript ruby unobtrusive-javascript ruby-on-rails-3

8
推荐指数
1
解决办法
1798
查看次数

使用jQuery删除验证器

所以我使用以下代码动态地向我的页面添加了一个验证器:

$.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方法的引用.

validation jquery unobtrusive-javascript

8
推荐指数
1
解决办法
5551
查看次数

.NET MVC 3中的jQuery不显眼验证 - 显示成功复选标记

在.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)

unobtrusive-javascript jquery-validate asp.net-mvc-3

8
推荐指数
1
解决办法
4547
查看次数

ASP.NET MVC PartialView不会发出验证标记

我在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

8
推荐指数
2
解决办法
4406
查看次数

如何在按住Ctrl键的同时导航到URL,在新选项卡中打开URL?

我希望能够(从Javascript)导航,就像点击链接一样(但不一定是点击链接时 - 可能是另一个动作).

我知道window.location.href = '...';window.location.replace('...');,但这些方法不允许用户通过按住Cmd的(OS X)或Ctrl键指定新窗口,新标签,等等.我希望能够在不手动检查这些键的状态的情况下完成.

javascript unobtrusive-javascript javascript-events

8
推荐指数
1
解决办法
1629
查看次数

在Rails 3中使用jQuery的AJAX和UJS的问题

我试着通过以下教程来实现这个目的:

http://net.tutsplus.com/tutorials/javascript-ajax/using-unobtrusive-javascript-and-ajax-with-rails-3/

和轨道广播

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

任何建议赞赏.

ajax jquery ruby-on-rails unobtrusive-javascript

7
推荐指数
1
解决办法
1027
查看次数

文件输入MVC 3所需的客户端验证

简单的问题...是否可以在类型文件的输入上使用客户端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

7
推荐指数
2
解决办法
1万
查看次数

KendoUI数据属性事件处理程序和'this'范围

似乎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;在对象构造函数中尝试了旧的,但它不起作用,有谁知道解决这个问题的最佳方法是什么?

更新:Hacky解决方法

因为我真的不想失去将模块包装为类的好处,所以我创建了事件调用函数包装器,然后调用适当对象上的方法.

例如,将标记连接到包装函数.

<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属性数据集中提取:

方法 …

javascript unobtrusive-javascript this kendo-ui

7
推荐指数
1
解决办法
2228
查看次数

第一个html助手生成客户端验证属性,而第二个不生成

假设我有这个模型:

public class Person
{
    public bool IsApproved { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

并且这个代码,我试着inputcheck类型渲染:

@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的顺序后,标记元素的顺序没有改变.

c# asp.net-mvc unobtrusive-javascript razor asp.net-mvc-4

7
推荐指数
1
解决办法
1112
查看次数

如何使用asp.net mvc 3 jquery验证与jjery对话框提交ajax?

我在用

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

6
推荐指数
2
解决办法
1万
查看次数