我正在MVC应用程序中使用cshtml代码使用EVOPDF生成pdf。 我在cshtml文件中有4个用于金额的文本框,另外1个文本框用于TotalAmount。 总计值将是所有4个文本框的值之和。我已经使用下面的C#代码
实现了此目标pdfDocument.Form.Fields["qyt1"].Action = new PdfActionJavaScript(JaveScriptfunctionForCurrentYear())
private string JaveScriptfunctionForCurrentYear() //C# method, returning js code as string to calcuate Total amount
{
return " this.getField('totqyt').value = (parseInt((this.getField('qyt1').value=='')?0:this.getField('qyt1').value) + parseInt((this.getField('qyt2').value=='')?0:this.getField('qyt2').value) + parseInt((this.getField('qyt3').value=='')?0:this.getField('qyt3').value)+ parseInt((this.getField('qyt4').value=='')?0:this.getField('qyt4').value));";
}
总计的计算仅适用于数字值。当用户用逗号输入数值时,以上代码中断。 因此,为了处理这种情况,我修改了我的方法来计算总金额,如下所示。但是下面的代码对于没有逗号的数字无效。
private string JaveScriptfunctionForCurrentYear() //C# method, returning js code as string
{
return " this.getField('totqyt').value = " +
" + parseInt((this.getField('qyt2').value =='')?0:this.getField('qyt2').value.replace(',','')) " +
" + parseInt((this.getField('qyt2').value =='')?0:this.getField('qyt2').value.replace(',','')) " +
" + parseInt((this.getField('qyt3').value =='')?0:this.getField('qyt3').value.replace(',',''))" +
" + parseInt((this.getField('qyt4').value =='')?0:this.getField('qyt4').value.replace(',',''))";
}
除此之外,用户还可以输入十进制值,也应将其汇总为总金额。
因此,如果用户输入逗号作为十进制值的数字值,请指导我如何计算总金额。我想防止用户输入任何其他可能破坏计算的字符。