2017-12-18 8 views
-1

キー押下時にテキストボックスの変更イベントをキャンセルしたい場合、ボタンクリック時にトリガしたいと思います。 これは私のHTMLOnキー押下変更イベントのテキストボックスとボタンクリックトリガ変更イベントのテキストボックスjquery

$('#btn1').on('click', function() { 
 
    var target = '#test'; 
 
    $(target).on("change"); 
 
    $(target).focus(); 
 
    $(target).val('HELLO').trigger('change'); 
 
}); 
 

 
$("#test").change(function(event) { 
 
    alert($(this).val()) 
 
}); 
 
$('#test').on('keypress', function(event) { 
 
    if (event.keyCode === 13) { 
 
     event.stopImmediatePropagation(); 
 
     $(this).off("change"); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="test" /> 
 
<input type="submit" id="btn1" value="BUTTON1" />

の一例であるが、それは変更イベントを発射されていません。

お願いします。事前におねがいします。

JSFiddle

+0

event.stopImmediatePropagation()を削除します。ちょうどフィドルを更新し、働いていた。 –

+0

いいえ、発射の変更イベントはできません。フィドルリンクを共有してください。 –

+0

そうではありません。このシナリオを試してみてください:最初にボタンをクリックして、-alert- then、sometypeをクリックします。あなたは良いようです。しかし、ボタンをクリックして、アラートを表示しないでください。私は問題がここにあると思う。 @AnupYadav –

答えて

1
$('#btn1').on('click', function() { 
       var target='#test'; 
     $(target).on("change",changeText($(target))); 
     $(target).focus(); 
     $(target).val('HELLO').trigger('change'); 
}); 

function changeText($this) { 
    alert($this.val()) 
} 
$('#test').on('keypress', function (event) { 
     event.stopImmediatePropagation(); 
     $(this).off("change"); 
}); 

イベントは、関数のparamではなかったし、プロパゲーションhttps://jsfiddle.net/0624eq86/20/

+0

私はそれを試みました。しかし、テキストボックスに入力してボタンを押すと、変更イベントが機能しませんでした。 https://jsfiddle.net/aanair08/0624eq86/14/ –

+0

実際に私の実際のシナリオは、キーを押してコール・アヤックスのリクエストを入力していくつかの提案を表示し、提案値をテキスト・ボックスにクリックしてその変更イベントを呼び出します。 –

+0

@AbhijithANair編集したコードを確認してください。 –

1

を使用しようと私はあなたがJavaScriptコード

で "イベント" を追加し忘れると思う置き換える:

$('#test').on('keypress', function() { 
    event.stopImmediatePropagation(); 
    $(this).off("change"); 
}); 

$('#test').on('keypress', function(event) { 
    event.stopImmediatePropagation(); 
    $(this).off("change"); 
}); 
+0

私もそれを試してみます。しかし、テキストボックスの火事変化イベントではありません。 https://jsfiddle.net/aanair08/0624eq86/14/ –

1

function test(val){ 
 
    alert(val); 
 
} 
 
$('#btn1').on('click', function() { 
 
    var target = '#test'; 
 
    $(target).focus(); 
 
    $(target).val('HELLO').trigger('change'); 
 
    $(target).on("change", test($(target).val())); 
 
}); 
 

 
$('#test').on('keypress', function(event) { 
 
    event.stopImmediatePropagation(); 
 
    $(this).off("change"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="test" /> 
 
<input type="submit" id="btn1" value="BUTTON1" />

は答えを確認してください、私はこれがあなたのために働くことを願っています。 私は、ONクリックイベント時に呼び出される関数テストを作成しました。

+0

実際には、テキストボックスの変更機能を変更することはできません。私のキー押しイベントとボタンクリックイベントはグローバルに書き込まれ、変更イベントはページごとに別々です。私が入力し、入力を押すと、提案が表示され、提案テキストボックスの値を完全に入力し、イベントをトリガしてデータを変更します。値を完全に知っていれば、テキストボックスに入力してからデータを入力してください。それは私が必要です。しかし、問題は私のことです。 –

+0

私は別の関数に置いてボタンのクリックで同じものを呼び出す '$("#test ")on(" change "、function(){})'でテキストボックス変更関数を変更しています。あなたがしたいことを正確に説明してください。 –

+0

私は数字のような何かを検索するためにすべてのページに検索ボックスを持っており、コンテンツを変更するときにその番号に対応するデータをロードします。私はenterキーを押したときに提案を得る関数をグローバルに書く。次に、提案のテキストボックスとトリガ変更イベントをクリックします。そのうまく動作します。しかし、私の必要性は私がenterを押すと私はトリガーの変更を望まないし、私が提案をクリックすると私はchangeイベントをトリガーしたいと思う。私は変更イベントを置き換える必要がある場合、私は思う200以上の場所でそれを変更する必要があります –

関連する問題