我有一个文本框。
这是我的formatfn函数:
<input name="tx1" size="10" type="text" id="tx1" class="sample dynamic format" maxlength="10" />
文本框的更改事件和键盘抬起事件绑定到两个不同的函数。
$('.sample.dynamic').change(myJsFunction);
$('.format').keyup(function (e) {
formatfn(this, e);
});
这是我的formatfn函数:
function formatfn(sValue, e) {
//Do some formatting
$(sValue).val(newVal);
return newVal;
}
这两个事件在IE和Firefox中都能正常工作,但是在Chrome中,只有keyup函数可以工作,change事件无法触发。
如果我在formatfn中注释掉下面这行代码,那么change事件也会在Chrome中开始触发。
//$(sValue).val(newVal);
但是,我不能在这行上进行评论,因为我需要在每次按键时应用格式。
更新:Formatfn正在执行各种格式化操作,但是为了给您一个关于newval变量的想法,我在此添加了一些相关代码:
var newVal = $(sValue).val();
if (newVal != "")
newVal = parseInt(RemoveCommas(newVal), 10).toString();
var sRegExp = new RegExp('(-?[0-9]+)([0-9]{3})');
while (sRegExp.test(newVal)) {
newVal = newVal.replace(sRegExp, '$1,$2');
newVal
,而这个变量在任何浏览器中都没有定义,会导致出现ReferenceError。 - Esailija