10

次のjqueryを使用して、誰かが私を正しい方向に向けることができるかどうか疑問に思っていました。入力フィールドに入力するまで送信ボタンを無効にしたい。

私はこれを思いついた

$(document).ready(function (){
 if ($('#inputName, #inputEmail, #inputTel').val().length > 0) {
  $("input[type=submit]").attr("disabled", "false");
 }
 else {
  $("input[type=submit]").attr("disabled", "true");
 }
});

すべてのテキスト入力フィールドに入力した後でも、ボタンは永久に無効になります

まだJqueryを学んでいて、しばらく使用していません..だから、どんなポインタでも感謝します

ありがとう

4

7 に答える 7

33

イベント バインディングは、ドキュメントの準備ができている場合のみです。

そのため、何かを変更するときにリスナーはありません。

代わりにこれを行います:

$(document).ready(function (){
    validate();
    $('#inputName, #inputEmail, #inputTel').change(validate);
});

function validate(){
    if ($('#inputName').val().length   >   0   &&
        $('#inputEmail').val().length  >   0   &&
        $('#inputTel').val().length    >   0) {
        $("input[type=submit]").prop("disabled", false);
    }
    else {
        $("input[type=submit]").prop("disabled", true);
    }
}
于 2013-05-26T17:18:17.133 に答える
0

このコードは、テキストボックス、電子メール、およびチェックボックスの入力タイプをチェックし、最後に正常に動作し、入力フィールドが非表示の場合は、表示されているフィールドのみをチェックします。

  var register_disable = false;
  jQuery("#SUBMIT_BUTTON-ID").prop('disabled', register_disable);
  jQuery("input[type!='submit']").bind('keyup change', function () {
    jQuery("input[type='text'], input[type='email']").not(':input:hidden').each(function () {
      if (jQuery(this).val().trim() == "" || !$("input[type='checkbox']").is(':checked')) {
        register_disable = true;
      }
    });
    jQuery("#SUBMIT_BUTTON-ID").prop('disabled', register_disable);
    register_disable = false;
  });
于 2019-10-15T14:40:37.683 に答える
0

change入力イベントで実行できるようにするには、ifコマンドを再度実行する必要があります

function updateSubmit(){
  if ($('#inputName').val().length+$('#inputEmail').val().length+$('#inputTel').val().length > 2) {
     $("input[type=submit]").prop("disabled", false);
   }
   else {
     $("input[type=submit]").prop("disabled", true);
   }
}

$(document).ready(function (){
  updateSubmit();
  $('#inputName, #inputEmail, #inputTel').on('change',function(){
   updateSubmit();
  });
});
于 2013-05-26T17:18:19.990 に答える