我有一个完美运行的现有脚本! 它是为 Firefox 2.x 和 Greasemonkey 0.8.x 编码的,我不能使用 jQuery!
旧的工作脚本:
//--- Make sure this list of names is all uppercase.
var usersWhoCanSetPriority = ['JOHN', 'LUKE', 'JEFF', 'MAX', 'ANDY'];
var bDisablePrio = true;
var tdNodes = document.getElementsByTagName ("TD");
for (var J = tdNodes.length - 1; J >= 0; --J) {
var tdNode = tdNodes[J];
if (tdNode.className == "user") {
var userName = tdNode.textContent.replace (
/^(?:.|\n|\r)+\(User:\s+([^)]+)\)(?:.|\n|\r)+$/i, "$1"
).toUpperCase ();
if (usersWhoCanSetPriority.indexOf (userName) > -1) {
bDisablePrio = false;
}
}
}
if (bDisablePrio) {
var oldInput = document.getElementsByName ("prio");
oldInput[0].setAttribute ("disabled", "disabled");
}
Here's a fiddle of how it looks/acts when the user is not in
usersWhoCanSetPriority
.Here's a fiddle of how it looks/acts when the user has full access .
新脚本示例:
现在,如果存在destination 输入,特权用户应该能够设置任何值。
但是应该阻止非特权用户设置 12
和 22
。
也就是说,如果用户是NOT -> 'JOHN'、'LUKE'、'JEFF'、'MAX'、'ANDY'(来自页脚)然后禁用 prio 输入,并且当用户输入“12”或“22”时停止输入,并写一条错误消息。
你必须知道史蒂夫(“不允许的用户”)被允许输入例如 120、121、220、222 和所有其他数字,但不是12 和 22!不知道是不是问题,因为12也在120里面! 'JOHN'、'LUKE'、'JEFF'、'MAX'、'ANDY' 被允许将所有数字输入到输入中。
旧脚本在不同的页面上运行,例如 site-one.html 和 site-two.html 然而,目标输入位于 site-one.html 和 site-three.html - 这意味着有时我只有优先输入,有时我同时拥有优先输入和目标输入。
我该怎么做?
问候,伯恩特
最佳答案
参见 http://jsfiddle.net/WT9yZ/4/
可以添加
if(bDisablePrio){
var destExcluded=['12','22'];
document.getElementById('dest').onchange=function(){
if(destExcluded.indexOf(this.value)>-1){
this.value='';
}
}
}
问题是,如果 "122"
被允许但 "12"
不允许,您不能在中使用 onkeypress
事件为了防止用户这样写,因为如果用户不能写 "12"
,他也不能写 "122"
。
然后,解决方案是 onchange
事件,该事件在文本字段失去焦点时触发(如果它已被修改)。然后,如果用户只写了 "12"
或 "22"
,您可以清除文本字段。
关于javascript - 如何根据页面其他地方的文本停止某些输入值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12307046/