2017-03-27 22 views
0

htmlでのテキスト入力は、異なる無線とチェックボックスの.change()イベントによって発生する関数の影響を受けます。私はそれを入力しようとしている場合、ユーザーが入力に入力した場合、この関数は前述のラジオとチェックボックス(これらのラジオとチェックボックスを使用できる必要があります)で.change()イベントが発生したときにもう実行されません。ただし、ユーザーが入力を空白のままにしてクリックした場合、スクリプトは再び実行されます。私は可能です。 これまでの私の取っているところは次のとおりです。 .prop('diabled'を使用すると入力が完全に無効になり、ユーザーが入力できなくなるため、別の解決策が必要です。Jqueryの機能を無効にして有効にする

$(function() { 
    $('#burger-navn').on('input', function() { 
    $("#burger-navn").prop('disabled', true); 
    }); 
//When the input (#burger-navn) is typed into it should be "disabled" 
    $('#burger-navn').focusout(function() { 
    if ($(this).val().length == 0) { 
     $("#burger-navn").prop('disabled', false); 
    } 
    }); 
//But if its clicked out of while its blank, it should be able to run again. 
    $("#okseinput, #laksinput, #kyllinginput, #vegetarinput").change(function() { 
    if (!$("#burger-navn").not(':disabled')) { //condition that tests 
     navngenerator(); 
    } 
    }); 
}); 
+0

http://api.jquery.com/one/機能をチェックし、それが助けになることがありそれ以外の場合は、.on()でバインドして、最初の実行後に、eventHandlerのバインドを解除して.off()で直ちにデタッチできます。 – kawashita86

答えて

-1
$(selector).on('change', function(event){ 
    event.preventDefault(); 
    event.stopPropagation(); 
    // the selected field no longer does anything on change 
}); 

あなたが探しているものということでしょうか?

+1

投稿する前に、誤字の誤りを確認してください。 'event.precentDefault()'は 'event.preventDefault()'で、 'event.stopPropagination()'は 'event.stopPropagation()'でなければなりません。 – Terry

+0

@テリーありがとう、私は送信後5秒を見た;) – mtizziani

+0

これはどのように実装されるのか分かりません。私が理解している方法から、これは、これを実行するのと同じセレクタからイベントを無効にすることしかできないように見えます。他の要素が変更されたときに実行される、ある要素からのイベントを無効にする必要があります。私はクリアするコメントを追加します。 – student42

0

これを解決するために、無効な属性を追加および削除できる別の入力タグを作成し、その属性があるかどうかを確認しました。 HTML中のSO :

<input id="burger-navn" type="text"/> 
    <input id="toggle" disabled="disabled" style="display:none"/> 

jQueryの:あなたが本当に一度だけ、それを発射する必要がある場合

var previousValue = $("#burger-navn").val(); 
    $("#burger-navn").keyup(function(e) { 
     var currentValue = $(this).val(); 
     if(currentValue != previousValue) { 
      previousValue = currentValue; 
      $("#toggle").prop('disabled', false); 
     }//This function will remove disabled from #toggle, when a user types into #burger-navn 
    }); 
    $('#burger-navn').focusout(function() { 
    if ($(this).val().length == 0) { 
     $("#toggle").prop('disabled', true); 
    } 
    }); 
    if ($("#toggle").is(':disabled')) { 
    navngenerator(); 
    } 
    $("#okseinput, #laksinput, #kyllinginput, #vegetarinput").change(function() { 
    if ($("#toggle").is(':disabled')) { 
     navngenerator(); 
    } 
    }); 
関連する問題