假设你有一个函数如下:
function chk() {
var valid = true;
if(document.getElementById("bob")) {
if(document.getElementById("bob").value == "") {
valid = false;
writeErrorMessage("bob", "Field 'Bob' is mandatory");
}
}
... //There may be a lot more than just this field, depending on the clients configuration.
return valid;
}
该函数由核心代码输出。现在有一个客户来了,说他们希望字段“x”是强制性的。在查看核心代码时,我们可以看到默认情况下该字段不能设为必填,但是我们之前所做的是如下所示:
var chk2 = chk;
chk = function() {
var valid = true;
if(document.getElementById("x")) {
if(document.getElementById("x").value == "") {
valid = false;
writeErrorMessage("x", "Field 'x' is mandatory");
}
}
if(valid) valid = chk2();
return valid;
}
这里的问题是,如果 valid 为 false,则它不会运行原始 chk 函数 (chk2),因此最初验证的那些字段的错误消息将不会显示。
我想做的基本上是编辑这个 chk 函数的工作原理——在最后一行之前添加几行,the return valid
,这样它就可以验证更多的字段。问题是整个函数都是由核心代码输出的,所以除了错误消息和验证的字段之外,这是我们无法控制的。如果默认情况下无法将某个字段设为必填字段,则它将永远不会为该字段输出此验证码。
请记住,return valid
保证该行始终存在,有没有人知道我可以采用函数体,替换它的特定部分然后将新字符串设置为该函数的新体的方法?这似乎是 JS 应该可以实现的,但我无法找到实现这一目标的方法。
提前致谢。问候,理查德