2016-09-04 7 views
1

以下のコードでは、id "phone_world"のonChange()イベントをアタッチし、入力マスクを適用しています。 入力マストは正常に動作していますが、既存のイベントとhello関数を削除しても呼び出されません。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'のようなinputmaskのコールバック関数を追加する必要があるかもしれません。 [こちらのドキュメント](https://github.com/RobinHerbots/jquery.inputmask#jqueryinputmask-3x)を確認してください。 –

+0

https://fiddle.jshell.net/kp183q11/light/ このフィドルリンクを確認してください。 ここでは、id = "phone_world"とHello関数にonClick = "Hello"を追加するだけです。 – Kalashir

+0

@aManHasNoName inputMaskオプションの中に一度に2つの関数を追加できますか? 私はonKeyValidation()を追加しようとしていますが、onMaskChange()だけを実行しています – Kalashir

答えて

0

jQueryの入力マスクマルチのdocsによると、keydown, keypress, paste, input, dragdrop, drop & blurイベントが中断されているchangeイベントも同様に中断(および文書化されていない)されたように、しかし、それはそうです。あなたができることはfocusblurイベントをバインドして変更をチェックします(変更を保存して比較するための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

@Kalashir、あなたも大歓迎です:)投票も高く評価されます。ありがとう! – Dekel

関連する問題