我使用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")');
有什么想法吗?测试了不同的浏览器和不同的字符。
答案 0 :(得分:2)
Mybe你改变输入模糊
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;
答案 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的值。