标签: unobtrusive-javascript

将数据与jQuery的DOM元素相关联

在以前的生活中,我可能做过这样的事情:

<a href="#" onclick="f(311);return false;">Click</a><br/>
<a href="#" onclick="f(412);return false;">Click</a><br/>
<a href="#" onclick="f(583);return false;">Click</a><br/>
<a href="#" onclick="f(624);return false;">Click</a><br/>
Run Code Online (Sandbox Code Playgroud)

现在使用jQuery,我可能会这样做:

<a class="clicker" alt="311">Click</a><br/>
<a class="clicker" alt="412">Click</a><br/>
<a class="clicker" alt="583">Click</a><br/>
<a class="clicker" alt="624">Click</a><br/>

<script language="javascript" type="text/javascript">
    $(".clicker").bind("click", function(e) {
        e.preventDefault();
        f($(this).attr("alt"));
    });
</script>
Run Code Online (Sandbox Code Playgroud)

除了使用alt属性将数据从DOM传递给jQuery感觉就像一个黑客,因为这不是它的预期目的.这里存储/隐藏DOM中的数据以供jQuery访问的最佳实践是什么?

jquery unobtrusive-javascript

5
推荐指数
1
解决办法
3224
查看次数

rails.js UJS观察者错过了form.submit()

在Rails 3应用程序中,只要切换某个复选框,我想让浏览器调用远程函数.在Rails 2中,通过传递很容易做到

:onclick => remote_function(...)
Run Code Online (Sandbox Code Playgroud)

到复选框助手.在Rails 3中,不推荐使用remote_*函数,因此我尝试了以下解决方法:

  • 使用复选框创建一个表单 form_tag ... :remote => true
  • 通过$("dummy_form").submit();从onclick处理程序调用提交表单

与Rails捆绑在一起的rails.js文件是一个侦听submit事件的观察者.但是,这些似乎仅在用户单击提交按钮时触发,而不是在form.submit()调用时触发(到目前为止仅在FF中测试).

这具有不希望的效果,即提交不是通过AJAX在后台完成,而是通常的方式,因此浏览器离开当前站点并显示来自控制器的响应.

有没有人知道解决方法?也许是一种完全不同的方式来获得相同的功能?

unobtrusive-javascript prototypejs ruby-on-rails-3

5
推荐指数
1
解决办法
891
查看次数

带有多个描述项的jQuery Accordion定义列表

我似乎无法使用具有多个desciption项(dd)的定义列表的jQuery Accordions.作者的例子只有单个dd项.

在下面的例子B2中,B3和C2显示onLoad,而不是像我希望的那样隐藏A1,B1和C1.

我怎么做到这一点?

jQuery('dl').accordion({ 
    event: 'click',     
    active: false, 
    animated: "bounceslide", 
    header: "dt" 
});?

<dl>

    <dt>A</dt>
    <dd>A1</dd>

    <dt>B</dt>
    <dd>B1</dd>
    <dd>B2</dd>
    <dd>B3</dd>

    <dt>C</dt>
    <dd>C1</dd>
    <dd>C2</dd>

</dl>
Run Code Online (Sandbox Code Playgroud)

(直播jsFiddle版)

jquery jquery-ui unobtrusive-javascript

5
推荐指数
1
解决办法
4384
查看次数

Asp MVC不引人注目的客户端验证始终返回true

我们有一个局部视图,其中包含一个启用了不显眼的客户端验证的表单.

如果我们使用Html.Action加载局部视图,则验证在客户端工作.

如果用户单击链接时我们使用JQuery使用局部视图填充div,则客户端验证始终返回true.

知道发生了什么事吗?

validation asp.net-mvc unobtrusive-javascript

5
推荐指数
1
解决办法
2019
查看次数

MVC 3 Ajax.ActionLink无法正常工作

我正在玩一些基于MvcMusicStore示例的商店,并且在使用MVC3 Ajax.ActionLink/Ajax.RouteLink助手时遇到了一些问题.问题是它根本不生成Ajax请求(Request.IsAjaxRequest()== false).我使用Ajax.BeginForm/Ajax.BeginRouteForm生成的表单虽然很好用.

配置:

<appSettings>
    <add key="ClientValidationEnabled" 
         value="true"/>
    <add key="UnobtrusiveJavaScriptEnabled" 
         value="true"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)

脚本:

    <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

链接:

@Ajax.ActionLink("show cart", "Show", "Cart", new AjaxOptions() { OnSuccess = "handleSuccess", HttpMethod = "Get", OnFailure = "handleFailure" })
Run Code Online (Sandbox Code Playgroud)

生成HTML:

<a data-ajax="true" data-ajax-failure="handleFailure" data-ajax-method="Get" data-ajax-success="handleSuccess" href="/Cart/Show">show cart</a>
Run Code Online (Sandbox Code Playgroud)

如上所述,这很好用:

@using (Ajax.BeginForm(
        "Show",
        new { controller = "Cart" },
        new AjaxOptions
        {
            OnSuccess = "handleSuccess",
            OnFailure = "handleFailure"
        }))
    {
        <input type="submit" class="button" />
    }
Run Code Online (Sandbox Code Playgroud)

该动作如下所示:

[Authorize]     
public …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc asp.net-ajax unobtrusive-javascript actionlink asp.net-mvc-3

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

将客户端复选框单击处理程序添加到 Razor 视图

id="IsRecurring"当 Razor 视图发送到浏览器时,以下标记会生成一个复选框类型的输入。

<div class="editor-label">
    @Html.LabelFor(model => model.IsRecurring)
</div>

<div class="editor-field">
    @{
        @Html.EditorFor(model => model.IsRecurring)
    }
</div>
Run Code Online (Sandbox Code Playgroud)

我需要根据复选框的选中状态显示/隐藏其他标记块。

最MVC3的方式是哪一种?

我的计划是在 div 上方添加以下脚本:

<script type="text/javascript">
    $("#IsRecurring").click(function () {
        do show hide;
    });
</script>
Run Code Online (Sandbox Code Playgroud)

我的视图标记中放置脚本的适当位置在哪里?有没有更好的方法可以引用IsReccuring复选框,而不是提前知道它会有什么 Id?

unobtrusive-javascript razor asp.net-mvc-3

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

jQuery 如何在表单发布返回后触发事件?

我有一个昂贵的表单操作,它在服务器上构建一个 zip 文件并将其返回给浏览器。

<form action='/download' method='post'>

<input type='submit' value='download'/>

</form>
Run Code Online (Sandbox Code Playgroud)

我想在单击按钮时阻止页面,以便用户不会重复点击按钮。

但是我想在表单返回后取消阻止页面。

如何在成功完成表单时触发事件?

(我知道我可以通过将表单更改为 ajax 提交来触发此操作,但随后不会出现保存文件对话框...)

有什么建议?

谢谢

html javascript jquery unobtrusive-javascript

5
推荐指数
1
解决办法
7963
查看次数

不显眼的 Javascript onclick

我最近正在阅读 Unobtrusive javascript 并决定试一试。我是否决定使用这种风格将在以后确定。这只是为了我自己的好奇心,而不是任何有时间限制的项目。

现在,我正在查看示例代码,很多示例似乎都在使用,这让我永远发现了 jQuery。他们使用像 $('class-name').whatever(...); 这样的函数。

好吧,我更喜欢 $('class').function 的外观,所以我尝试在不使用 jQuery 的情况下模拟它(因为我不知道 jQuery 并且不关心它 atm)。但是,我无法使这个示例工作。

这是我的 jsFiddle:http : //jsfiddle.net/dethnull/K3eAc/3/

<!DOCTYPE html>
<html>
<head>
    <title>Unobtrusive Javascript test</title>
<script>
    function $(id) {
        return document.getElementById(id);
    }

    $('tester').onclick(function () {
        alert('Hello world');
    });
</script>
<style>
    .styled {
        width: 200px;
        margin-left: auto;
        margin-right: auto;
        font-size: 2em;
    }
    a {
        cursor: pointer;
        color: blue;
    }
    a:hover {
        text-decoration: underline;
    }   
</style>
</head>
    <body>
        <div class='styled'>
            <ul>
                <li><a id='tester'>CLICK ME</a></li>
            </ul>

         </div> 
     </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我原以为当您单击链接时会弹出一个警告框,但似乎没有发生。在 …

unobtrusive-javascript

5
推荐指数
1
解决办法
5000
查看次数

使用不引人注目的javascript从单个事件调用多个函数

我有一个输入元素

<select id="test"></select>
Run Code Online (Sandbox Code Playgroud)

在改变我想要调用多个功能

$('#test').change(function1, function2);
Run Code Online (Sandbox Code Playgroud)

现在的功能只是现在的警报

var function1 = function(){alert('a');};
var function2 = function(){alert('b');};
Run Code Online (Sandbox Code Playgroud)

只调用第二个函数.我知道这是因为警报和刹车点.我知道纠正这种方法的一种方法是从另一个函数调用function1和function2,但我想避免这种情况.

javascript jquery unobtrusive-javascript

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

使用数字属性的MVC3 DataAnnotationsExtensions错误

我已经安装了Scott的Kirkland DataAnnotationsExtensions.

在我的模型中,我有:

[Numeric]
public double expectedcost { get; set; }
Run Code Online (Sandbox Code Playgroud)

在我看来:

@Html.EditorFor(model => model.expectedcost)
Run Code Online (Sandbox Code Playgroud)

现在,当页面尝试渲染时,我收到以下错误:

不显眼的客户端验证规则中的验证类型名称必须是唯一的.以下验证类型不止一次出现:数字

任何想法为什么我收到错误?

asp.net-mvc unobtrusive-javascript data-annotations asp.net-mvc-3

4
推荐指数
1
解决办法
3144
查看次数