jquery-InputMast 覆盖输入字段上的现有事件
jquery-InputMast overriding existing events on input field
在下面的代码中,我在 id "phone_world" 上附加了 onChange() 事件,并在其上应用了输入掩码。
输入桅杆工作正常,但没有调用删除现有事件和问候功能。
<div class="demo">
<input type="text" id="phone_world" onChange = "hello()" value="" size="25">
<label for="phone_world" id="descr_world">Страны мира</label>
<script>
var listCountries = $.masksSort($.masksLoad("https://cdn.rawgit.com/andr-04/inputmask-multi/master/data/phone-codes.json"), ['#'], /[0-9]|#/, "mask");
var maskOpts = {
inputmask: {
definitions: {
'#': {
validator: "[0-9]",
cardinality: 1
}
},
showMaskOnHover: false,
autoUnmask: true,
clearMaskOnLostFocus: false
},
match: /[0-9]/,
replace: '#',
listKey: "mask"
};
var maskChangeWorld = function(maskObj, determined) {
if (determined) {
var hint = maskObj.name_ru;
if (maskObj.desc_ru && maskObj.desc_ru != "") {
hint += " (" + maskObj.desc_ru + ")";
}
$("#descr_world").html(hint);
} else {
$("#descr_world").html("Страны мира");
}
}
$('#phone_world').inputmasks($.extend(true, {}, maskOpts, {
list: listCountries,
onMaskChange: maskChangeWorld
}));
function hello(){
alert('hi');
}
</script>
根据 jQuery 输入掩码 multi 的 docs,keydown, keypress, paste, input, dragdrop, drop & blur
事件被中断,但似乎 change
事件也被中断(而不是记录)。您可以做的是绑定 focus
和 blur
事件以检查更改(在 data()
函数的帮助下保存更改并进行比较)。
这是代码示例:
$('#phone_world')
.on('focus', function() {
$(this).data('original-val', $(this).val())
})
.on('blur', function() {
if ($(this).data('original-val') != $(this).val()) {
alert('value changed')
} else {
alert("value wasn't changed")
}
});
这是一个有效的 fiddle:
https://fiddle.jshell.net/5a6xo8kc/
在下面的代码中,我在 id "phone_world" 上附加了 onChange() 事件,并在其上应用了输入掩码。 输入桅杆工作正常,但没有调用删除现有事件和问候功能。
<div class="demo">
<input type="text" id="phone_world" onChange = "hello()" value="" size="25">
<label for="phone_world" id="descr_world">Страны мира</label>
<script>
var listCountries = $.masksSort($.masksLoad("https://cdn.rawgit.com/andr-04/inputmask-multi/master/data/phone-codes.json"), ['#'], /[0-9]|#/, "mask");
var maskOpts = {
inputmask: {
definitions: {
'#': {
validator: "[0-9]",
cardinality: 1
}
},
showMaskOnHover: false,
autoUnmask: true,
clearMaskOnLostFocus: false
},
match: /[0-9]/,
replace: '#',
listKey: "mask"
};
var maskChangeWorld = function(maskObj, determined) {
if (determined) {
var hint = maskObj.name_ru;
if (maskObj.desc_ru && maskObj.desc_ru != "") {
hint += " (" + maskObj.desc_ru + ")";
}
$("#descr_world").html(hint);
} else {
$("#descr_world").html("Страны мира");
}
}
$('#phone_world').inputmasks($.extend(true, {}, maskOpts, {
list: listCountries,
onMaskChange: maskChangeWorld
}));
function hello(){
alert('hi');
}
</script>
根据 jQuery 输入掩码 multi 的 docs,keydown, keypress, paste, input, dragdrop, drop & blur
事件被中断,但似乎 change
事件也被中断(而不是记录)。您可以做的是绑定 focus
和 blur
事件以检查更改(在 data()
函数的帮助下保存更改并进行比较)。
这是代码示例:
$('#phone_world')
.on('focus', function() {
$(this).data('original-val', $(this).val())
})
.on('blur', function() {
if ($(this).data('original-val') != $(this).val()) {
alert('value changed')
} else {
alert("value wasn't changed")
}
});
这是一个有效的 fiddle: https://fiddle.jshell.net/5a6xo8kc/