在使用部分视图时只添加一次javascript代码
我有一个局部视图,它本身就在局部视图中。最内部局部视图中的内容可以多次渲染。我有一个javascript代码,它只对最里面的视图有意义。因此,当内容呈现不止一次时,javascript代码被添加两次,事件被调用两次。e、 g在使用部分视图时只添加一次javascript代码,javascript,jquery,asp.net-mvc-partialview,Javascript,Jquery,Asp.net Mvc Partialview,我有一个局部视图,它本身就在局部视图中。最内部局部视图中的内容可以多次渲染。我有一个javascript代码,它只对最里面的视图有意义。因此,当内容呈现不止一次时,javascript代码被添加两次,事件被调用两次。e、 g var isDccmAndReady = '@isDccmAndReady'; $(document).ready(function() { $(function() { $("input[name='ReportDate']").change(f
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;
});
});
现在,如果文本框被嵌入两次,那么当其中一个文本框中发生更改时,将调用两次更改事件。如何避免此问题?我不确定您想要什么,如果您希望函数只运行一次,可以使用下划线“一次”函数:
var newfunction = _.once(yourfunction);
newfunction();
newfunction();
如果您的目的是防止事件处理程序在元素中添加多次,则可以先解除事件绑定,然后再次绑定,如下所示:
$("#someselector").unbind("change").change(function(){
})
终于开始工作了。我在分部视图中添加了以下javascript,其中调用了最内部的分部,以便javascript在dom中注册一次
$(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;
});
});
});