我通过在document.Ready()
内调用它来调用它,该函数在一个名为startSript.js
文件的文件中定义,以汇总一组输入框的值。
对此函数的调用的一个示例是:autoSumBySelector('.class1', 'outputClass1')
将使用类属性class1
对输入框的值求和,并在具有类属性{{1}的div标记中显示总和}}。
除了将值输入到输入框(例如outputClass1
)之后,如果我将其中一个输入框的值更改为0,或者如果我将该值完全删除以使其为空,则该函数正常工作。在这种情况下,输出div标签不会更改该值。
说,如果我在三个框中输入值5,10,15,输出div将正确显示30.如果我将值10更改为1,则总和将正确显示为21.但如果我更改任何三个值为0或空白,输出div不会改变,仍会显示先前的值(例如,21)。
class1
修改
这是一个ASP.NET MVC应用程序。我有两个脚本文件common.js和startScript.js,它们在Index.cshtml(视图)文件中按如下方式加载,如下所示。 :
var autoSumBySelector = function (selector, outputselector, func, fixed) {
//Attaches the Event to the selector or array of selector
if (selector != undefined) {
$(selector).change(function (event) {
var validation = true;
if (fixed == undefined) {
fixed = 0;
}
if (typeof (func) == "function") {
validation = func(this, outputselector);
}
if (validation) {
//This is to sum currency value of given selector
var total = 0;
$(selector).each(
function () {
var vl = this.value.replace(/,/g, '');
if (!isNaN(vl) && vl.length != 0) {
total += parseFloat(vl);
}
});
if (outputselector != undefined) {
$(outputselector).val(total).change();
}
else //if the output div is not defined then it returns the value
return sum;
}
else {
event.preventDefault();
}
});
}
};
该函数在common.js中定义,调用由starScript.js调用,如下所示:
@{
ViewBag.Title = "App title";
}
@section Scripts{
<script type="text/javascript" src="~/Scripts/common.js">
</script>
<script type="text/javascript" src="~/Scripts/startScript.js">
.........
}
<form>
HTML tags here
.....
partial views rendered here
</form>