当使用局部视图时,只添加一次javascript代码
to have a javascript code only added once when using partial view
我有一个局部视图,它本身是在局部视图。最内部部分视图中的内容可以多次呈现。我有一个javascript代码,这是重要的只有最内部的视图。因此,当内容被渲染不止一次时,javascript代码被添加两次,事件被调用两次。如
var isDccmAndReady = '@isDccmAndReady';
$(document).ready(function() {
$(function() {
$("input[name='ReportDate']").change(function() {
if (isDccmAndReady) {
var d = new Date();
var currentDate = (d.getMonth() + 1) + "/" + +d.getDate() + "/" + d.getFullYear();
var dateSelected = $(this).val();
if (new Date(dateSelected) > new Date(currentDate)) {
var answer = confirm("The contract has been already reported, are you sure you wish to continue?");
if (answer) {
return true;
} else {
$(this).val('@Model.OriginalReportDate.Value.ToShortDateString()');
return false;
}
}
}
return false;
});
});
现在,如果文本框被嵌入两次,onchange事件会在其中一个文本框发生变化时被调用两次。如何规避这个问题?
我不确定你想要什么,如果你想一个函数只运行一次,你可以使用下划线"once" function:
var newfunction = _.once(yourfunction);
newfunction();
newfunction();
如果您的目的是防止事件处理程序在元素中添加多次,您可以先取消绑定事件,然后再重新绑定,如:
$("#someselector").unbind("change").change(function(){
})
终于修好了。我在分部视图中添加了以下javascript,其中调用了最内层的分部,以便javascript在dom中注册一次。我还在文本框中添加了几个数据属性,其值在javascript
中需要。$(document).ready(function () { $(function () { $("input[name='ReportDate']").change(function () { if ($(this).attr('data-isDccmAndReady')) { var d = new Date(); var currentDate = (d.getMonth() + 1) + "/" + +d.getDate() + "/" + d.getFullYear(); var dateSelected = $(this).val(); if (new Date(dateSelected) > new Date(currentDate)) { var answer = confirm("The contract has been already reported, are you sure you wish to continue?"); if (answer) { return true; } else { $(this).val($(this).attr('data-originalReportDateVal')); return false; } } } return false; }); }); });
相关文章:
- 可能只在for循环内部运行一次代码块
- 在单击事件中,第一次单击时激发代码一次,其余代码在所有单击时运行
- JavaScript 只在 php 代码中执行一次
- 是否有脚本/代码可以一次将链接属性添加到多个链接
- 计划每60秒运行一次代码
- ASP.NET:每5分钟从代码后面调用一次弹出窗口
- 为什么我的代码可以在chrome上工作,而不是一次使用cordova编译
- 代码只执行一次,但应该继续执行
- 有没有可能的方法可以在一次ASP按钮单击中同时显示JavaScript和服务器端代码中的消息
- 我想单击一个按钮,一次只执行已经制作的程序中的一行代码.(JavaScript)
- 浏览器化只执行一次模块代码,在多个需要调用上
- 如何获取单击元素的类值,并使用此值在 jquery 中最后一次出现此类之后放置一段 html 代码
- 如何在文本区域的焦点上执行一次代码
- 强制键控事件每个键代码仅触发一次
- 如何修复此代码以显示 10 秒并一次又一次地永远隐藏 10 秒
- Javascript - 滚动事件的效率,仅运行一次代码
- Keydown只运行一次代码
- 每10秒执行一次代码,但也从0秒开始
- 每隔几秒钟只在setInterval函数内执行一次代码
- 每4秒重复一次代码