私はhtmlが次のように見えると仮定しています:
<input type="text" id="item_count" value="0" />
<input type="button" id="btn" value="Increment"/>
ボタンをクリックするためのイベント ハンドラー (当然) と、入力フィールドの変更イベントのためのイベント ハンドラーが必要です。ボタンをクリックしても変更イベントはトリガーされませんが、入力フィールドを手動で変更すると変更イベントがトリガーされます。したがって、ユーザーがフィールドを変更した場合、カウンターを安全に 0 にリセットできます。
$('#btn').on( 'click', function() {
$('#item_count').val( function( i, oldval ) {
return (oldval*1) + 1;
} );
} );
$('#item_count').on( 'change', function() {
$('#item_count').val( '0' );
} );
編集: データを入力する方法は 2 つしかありません。1つはキーボードによるものです。もう一つはボタンです。つまり、変更イベントがボタンによってトリガーされない場合、変更イベントがトリガーされるケースの 100% は、キーボード経由である必要があります。jQueryの.data(...)
( docs ) 機能を含めるようにコードを少し変更して、次のコードのようにすることができます。入力が変更され、その後ボタンが押されたときに入力をリセットします。
$('#btn').on( 'click', function() {
$('#item_count').val( function( i, oldval ) {
if( $(this).data( 'fromKeyboard' ) == 1 ) {
$(this).data('fromKeyboard', 0 );
return 1;
}
return (oldval*1) + 1;
} );
} );
$('#item_count').on( 'change', function() {
$(this).data( 'fromKeyboard', 1 );
} );
jsbin の例。