替换后字符提交错误

Character submitted wrong after replace

我使用 greasemonkey 脚本替换字段中的任何逗号或分号。 有几个内部网站我必须这样做,有些只有输入字段,有些有文本区域。

脚本确实有效,但是当我提交表单时,文本区域的替换字符仍将作为逗号和分号提交。

为了确保在上次模糊之前不会触发提交,我添加了一个警报。

(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 尚未处理的所有延迟更改在提交之前得到处理:

$(document).ready(function() {
    function updateValue() {
        this.value = this.value.replace(/[,;]/g, "-").replace(/\n/g, " ");
    }
    $("textarea, input").blur(updateValue);
    $("form").submit(function() {
        $(this).find("textarea, input").each(updateValue);
    });
});

遗憾的是,Stack Snippets 不允许使用表单,所以这里是上面的 live on jsFiddle。请注意,如果您在字段中键入 cute;kittens,然后选择退出或提交,它会更改为 cute-kittens,如果您发送表格。