我输入了一些输入字段,用户可以在第一次访问特定页面时输入值,这些值将保存到数据库中,每次在文本框中输入值时都会调用该函数它将显示总数中5个值的百分比。
当用户离开表单并返回时,会显示标签而不是文本框。下面的代码是否适合这样一个任务,它会动态选择正确的参数“.text”或“.val”来获取值,因为下次用户返回时标签会被填充?我想自动执行此过程,而不是自己附加每个标签值。
我已经标记了我遇到麻烦的地方
function calcABC(e) {
//Declare array of numeric selectors
var arr = ["a", "b", "c", "d", "e"];
var x = "";
var y = "";
if (e == "label") {
x = "lbl_"
y = ".text()";
}
else {
x = "txt_"
y = ".val()";
}
//HAVING TROUBLE HERE VVVVVVV
alert(eval("$('#' + x + arr[0]) + y)"));
alert("hello");
//loop through the array and get the value for that array index
var before = 0;
for (var i in arr)
{
before += isNaN(parseInt($("#"+ x + arr[i]).val())) ? 0 : parseInt($("#" + arr[i]).val())
}
//Apply the total to the global variable
ABCTotal = before;
//Loop through the numbers and get the precentage value and append the value to the relevant area
for (var j in arr)
{
console.log($("#" + x + arr[i]).val())
var val = isNaN(parseInt($("#" + x + arr[j]).val())) ? 0 : parseInt($("#" + arr[j]).val());
$("#txt" + arr[j] + "Prec > small").text(calcPrec(val).toFixed(2) + "%");
}
//Set the total field
$("#txt_ABCTotal").text(ABCTotal);
}
// Nice function to quickly calculate the precent value from a total
function calcPrec(val)
{
return (val * 100) / ABCTotal;
}
我希望这是有道理的!无论如何都有任何帮助!
答案 0 :(得分:0)
为避免使用eval,强烈建议最好使用y =' text'或者y =' val'然后使用数组表示法调用该函数,如:
$('#' + x + arr[0])[y]()