【发布时间】:2017-03-02 08:22:48
【问题描述】:
我使用greasemonkey 脚本替换字段中的任何逗号或分号。 有几个内部网站我必须这样做,有些只有输入字段,有些带有 textarea。
脚本确实有效,但是当我提交表单时,文本区域的替换字符仍然会以逗号和分号的形式提交。
为了确保在上次模糊之前不会触发提交,我添加了一个警报。
(function() {
'use strict';
$(document).ready(function(){
$("textarea").blur(function(){
this.value=this.value.replace(/[,;]/g, "-");
this.value=this.value.replace(/\n/g, " ");
});
$("input").blur(function(){
this.value=this.value.replace(/[,;]/g, "-");
this.value=this.value.replace(/\n/g, " ");
});
});
var nodes = document.getElementsByTagName('input');
if (window.location.href == "<website-url>")
nodes[39].setAttribute('onclick', 'alert("Data validated")');
else
nodes[0].setAttribute('onclick', 'alert("Data validated")');
有什么想法吗?用不同的浏览器和不同的字符进行了测试。
【问题讨论】:
-
我建议在表单的
submit事件中进行更新,而不是(或除了)字段上的blur事件;如果blur在submit之后针对您提交之前所在的字段触发,我一点也不感到惊讶。 -
alert几乎是尝试这样做的最糟糕的方法。 :-)alert和focus/blur有非常奇怪的相互作用,并且因浏览器而异。 -
是的,警报部分实际上是提供点击和实际提交之间的时间范围
标签: javascript jquery replace greasemonkey blur