【发布时间】:2012-10-25 22:12:12
【问题描述】:
我有一个文本框
<input name="tx1" size="10" type="text" id="tx1" class="sample dynamic format" maxlength="10" />
文本框更改和 keyup 事件绑定到两个不同的函数。
$('.sample.dynamic').change(myJsFunction);
$('.format').keyup(function (e) {
formatfn(this, e);
});
这是我的格式:
function formatfn(sValue, e) {
//Do some formatting
$(sValue).val(newVal);
return newVal;
}
这两个事件在 IE 和 firefox 中都可以正常工作,但在 chrome 中只有 keyup 功能可以正常工作,并且不会触发 change 事件。
如果我在 formatfn 中评论以下行,则更改事件也开始在 chrome 中触发。
//$(sValue).val(newVal);
但我不能评论这一行,因为我需要在每个按键上应用格式。
我查看了here 和here 两个类似的问题,但找不到答案。
更新: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');
【问题讨论】:
-
您是否正在寻找每次按键时的更改事件?仅当字段未聚焦时才会触发更改。
-
不,我喜欢在每次按键时调用“formatfn”,在 onchnage 事件上调用“myJsFunction”。
-
您没有发布所有代码,因为您引用的是
newVal,它没有在任何地方定义,并且会在任何浏览器中导致ReferenceError -
另外,您设置
.val(newVal),但返回newval是否有原因 - 请注意大小写差异? -
Esailija : 我已经为 newVal 添加了更多信息。
标签: jquery google-chrome textbox onchange