2016-09-04 2 views
1

В приведенном ниже коде я приложил onChange() событие к id "phone_world", а также применил маску ввода на нем. Входная мачта работает нормально, но удаление существующего события и приветствия не вызвано.jquery-InputMast переопределяет существующие события в поле ввода

<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> 
+0

Вы можете добавить рабочий фрагмент одного и того же, со всеми зависимости Js. Возможно, вам нужно добавить функцию обратного вызова входной маски, такую ​​как 'onKeyDown' или' onKeyValidation'. Проверьте [документацию здесь] (https://github.com/RobinHerbots/jquery.inputmask#jqueryinputmask-3x). –

+0

https://fiddle.jshell.net/kp183q11/light/ Проверьте эту ссылку на скрипку. Здесь нам просто нужно добавить onClick = "Hello" на id = "phone_world" и функцию Hello. – Kalashir

+0

@aManHasNoName Можем ли мы добавить две функции за один раз в параметрах InputMask? Я пытаюсь добавить onKeyValidation(), но он выполняется только наMaskChange() – Kalashir

ответ

0

Согласно docs, что keydown, keypress, paste, input, dragdrop, drop & blur события прерываются, однако это кажется JQuery маска ввода нескольких походит на 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") 
     } 
    }); 

Вот рабочая скрипку: https://fiddle.jshell.net/5a6xo8kc/

+0

Многие Большое спасибо !!! Его работа :) – Kalashir

+0

@ Калашир, приветствую :) голос будет оценен также. Благодаря! – Dekel