替换

时间:2017-03-02 08:22:49

标签: javascript jquery replace greasemonkey blur

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

该脚本实际上有效,但是当我提交表单时,textareas的替换字符仍将以逗号和分号的形式提交。

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

(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")');

有什么想法吗?测试了不同的浏览器和不同的字符。

2 个答案:

答案 0 :(得分:2)

Mybe你改变输入模糊

&#13;
&#13;
function changeValue(e){
   e.target.value = this.value.replace(/[,;]/g, "-");
   e.target.value = this.value.replace(/\n/g, " ");
}

$(document).ready(function(){
 $("textarea").on('input', changeValue);
 $("input").on('input',changeValue);

});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<textarea name="area"></textarea>
<input name="input">
<button>submit</button>
</form>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

我会使用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,这是您发送表单时提交给Google的值。