2017-11-06 2 views
2

私はキーアップと変更の両方の機能を試しましたが、ここでそのトリックはしません。 ユーザーがバウチャーコードを入力し、バウチャーがデータベースに存在するかどうかを確認するAjaxリクエストを送信したいとします。私は試しました:キーアップまたは変更イベントで、Ajaxを起動してjQueryでデータを送信します

$('#discount-voucher').keyup(function(event) { 
    // Get the value 
    let value = $(this).val() 

    // Check if exists 
    $.ajax({ 
     url: '{{ route('get-voucher') }}', 
     type: 'POST', 
     data: {_token: '{{ csrf_token() }}', code: value} 
    }) 
    .done(function(data) { 
     if (data == 'error') { 
      $('span#voucher-error').text('Неавлиден ваучер') 
     } 
    }) 
    .fail(function() { 
     console.log("error") 
    }) 
    .always(function() { 
     console.log("complete") 
    }) 
}) 

しかし、これらのバウチャーは電子メールで送信され、ユーザーコピーはそれらを貼り付けるとしましょう。うまくいかないだろう。 変更機能を使用すると、ユーザーは入力の外をクリックしたり、機能を有効にするためにEnterキーを押したりする必要がありません。また、「入力の外側をクリックしてくださいバウチャーが有効かどうかを確認してください。 "だから私は必要なものは、クリックするか

pasteイベントがあり
+0

なぜ 'keyup' /' keydown'は動作しませんか? – freginold

+0

キーボードの横に値を入力する方法は他にもあります。彼は彼の質問でそれを言う。 –

+0

@MarkBaijensああ、ありがとう、ありがとう。最初はフォームからコピー/ペースト*することを意味していたと思っていました。 – freginold

答えて

7

、あなたは以下のような複数のイベントリスナーを設定することができ入る押さずに有効になります変更機能のようなものは次のとおりです。

$('#discount-voucher').on('keyup paste change', function() { 
     //Do something . . . . 
}); 

あなたが絞る必要があるかもしれませんajaxリクエストでは、入力することによって頻繁に呼び出されることはありません。

+0

私はそれを試しましたが、再び要素の外側をクリックするか、またはEnterキーを押す必要があります – TheAngelM97

+0

@ TheAngelM97あなたはfocusinやfocusoutのような必要なイベントを追加できます。 – SilverSurfer

+0

問題は、伝票を貼り付け直してコピーするときです。機能のために要素の外側をクリックする必要があります。 focusinを入力する前に入力にフォーカスを当てますが、機能は有効になりますが、バウチャーを貼り付けた後、もう一度要素の外側をクリックする必要があります – TheAngelM97

関連する問題