2017-11-02 10 views
0

私は、次のjsファイルを持っていると私は私のAJAX呼び出しの後にボタンを無効にする:はAJAX呼び出しの後にJavaScriptでボタンを無効にすることはできません

$('document').ready(function() { 
    const runField = $('input[id=run]') 
    const runButton = $('.btn-run') 
    const saveButton = $('.btn-save') 

    runButton.on('click', function(event) { 
    console.log('run clicked') 
    runField.val(1) 
    event.preventDefault() 
    $('.btn-run').prop('disabled', true) 
    console.log($('.btn-run').prop('disabled')) 
    runCode() 
    $('.btn-run').prop('disabled', false) 
    }) 
}) 

runCode()を私のAJAX機能がここにあるが、私は.prop('disabled', true)ボタンを使用する場合私のコンソールで次のログ出力された行がtrueを返しても、まだ無効になっていませんでした。 IDのようなすべてのプロパティが正しいことを確認しました。どんな助けにも感謝!

+1

約束を使用する必要があります。 – SLaks

+1

無効にした直後にボタンを再度有効にしています。 AJAX呼び出しが終了したときにのみ再度有効にする必要があります。明確にするために、あなたのコードは 'runCode'を待たずに次の行に進みます(' runCode'は非同期関数です)。 @Slaksによると、約束やコールバックを使用してボタンを再度有効にする必要があります。 – CRice

+0

こんにちはSLaks、私はjavascriptに新しいので、あなたはそれについての詳細を与えることができますか? – yzhan

答えて

2

可能であればrunCodeを共有することは、$('.btn-run').prop('disabled', false)のための約束またはコールバック関数を使用する必要があります。

あなたのAJAXコールバックは以下のようになります。 URLは異なるが、成功すると$('.btn-run').prop('disabled', false)が実行されている。これが有効になるはずです。

$.ajax({ 
    url: "demo_test.txt", 
    success: function(result){ 
     $('.btn-run').prop('disabled', false) 
    } 
}); 
関連する問題