Firefox问题:event.target

时间:2014-04-11 11:14:16

标签: javascript firefox

我使用下面的脚本将一些变音标记从遗留标签替换为标准格式。在Firefox以外的所有浏览器中均可正常使用;它根本不起作用。我假设问题来自event.target,但我刚开始使用javascript而且缺乏修复此问题的方法。

为我的问题找到了这个(posible?)解决方案,但不知道如何为我的脚本调整它:event.target not working on Firefox

任何帮助将不胜感激!

function inlocuire_diacritice (form) {
var form = event.target;
var i, l;
for (i = 0, l = form.elements.length; i < l; i += 1) {
if (form.elements[i].type === 'text') {
  form.elements[i].value = form.elements[i].value.replace(/Ş/g, 'Ș');
  form.elements[i].value = form.elements[i].value.replace(/ş/g, 'ș');
  form.elements[i].value = form.elements[i].value.replace(/Ţ/g, 'Ț');
  form.elements[i].value = form.elements[i].value.replace(/ţ/g, 'ț');
}
}
return true; 
}

编辑:我从另一个函数内部调用该函数:

function validate(form) {
//form validation script
inlocuire_diacritice (form);
}

这是在表单提交上调用的:

<form action="whatever" name="whatever" method="post" onsubmit="return validate(this)">

1 个答案:

答案 0 :(得分:1)

试试这个:

<form action="whatever" name="whatever" method="post" onsubmit="return validate(event, this)">...</form>

功能:

function inlocuire_diacritice (ev, form) {
    // form is a reference to the form element already
    // if you need event.target, use ev.target
    // this refers to the element to which this event is attached
                :
}

实际上在FF(或任何现代浏览器)中,您不需要在调用函数时传递参数,在函数声明中您需要包含一个参数,表示event。 eventhandler中的this引用事件所附加的元素。

请阅读addEventListener以了解听众应如何实际附加到元素。