2012-07-14 33 views
6

ユーザがフォームの入力フィールドに入力するまで、送信ボタンを無効にしようとしています。jQueryで入力が空の場合に送信ボタンを無効にする

本当に良い答えがあるTHISスレッドが見つかりました。私はフィールドが記入されたときにサブミットボタンを再び有効にするという少しの問題を抱えています。

誰かがこの機能を見て、私が逃しているものを理解するのに役立つことができますか? ご協力いただけると幸いです。D ありがとうございます。また、あなたが複数のイベントを組み合わせることができ

$inputs.on('keyup', function() { 
     $submit.prop("disabled", !checkEmpty()); 
    }).keyup(); // trigger an initial keyup 

:あなたも同じようkeyUpイベントに使用できる代わりに、ぼかしの

Heres a Fiddle

$(document).ready(function() { 
var $submit = $("input[type=submit]"); 

if ($("input:empty").length > 0) { 
$submit.attr("disabled","disabled"); 
} else { 
$submit.removeAttr("disabled"); 
} 
}); 


<form method="POST" action="<%=request.ServerVariables("SCRIPT_NAME")%>"> 
User Name: <input name="Username" type="text" size="14" maxlength="14" /><br /> 
Password: <input name="last_name" type="password" size="14" maxlength="14"><br /> 
<input type="submit" value="Login" name="Submit" id="loggy"> 
</form> 

答えて

14
$(document).ready(function() { 
    var $submit = $("input[type=submit]"), 
     $inputs = $('input[type=text], input[type=password]'); 

    function checkEmpty() { 

     // filter over the empty inputs 

     return $inputs.filter(function() { 
      return !$.trim(this.value); 
     }).length === 0; 
    } 

    $inputs.on('blur', function() { 
     $submit.prop("disabled", !checkEmpty()); 
    }).blur(); // trigger an initial blur 
}); 

Working sample

$inputs.on('keyup blur', function() { 
     $submit.prop("disabled", !checkEmpty()); 
    }).keyup(); // trigger any one 
+0

ありがとうございます!それはすばらしいことです:Dはぼかしを変えることが可能ですか?無効にするためにユーザーは入力をクリックしなくてもいいですか? – xxstevenxo

+0

@xxstevenxoよ、私の更新を見てください。 – thecodeparadox

+0

nevermind、私は 'ぼかし'を 'keypress'に変更し、私が望んでいた正確な結果を得ました。あなたの助けとデモのためにもう一度、ありがとう! :D – xxstevenxo

1

あなたの質問では、入力の状態を常時チェックするコードは表示されませんが、問題はそれだと思います。

ライブイベントを使用してこれを行うことができます。

$(document).ready(function() { 
     var $submit = $("input[type=submit]"); 

     function checkSubmitState() 
     { 
      if ($("input:empty").length > 0) { 
      $submit.attr("disabled","disabled"); 
      } else { 
      $submit.removeAttr("disabled"); 
      } 
     } 

     // check the submit state on every change or blur event. 
     $("input").live("change blur", checkSubmitState); 
}); 
0

が条件実行する前に値を確認するためにkeyUpイベントを使用します:例として、あなたのコードを使用して

$(document).ready(function() { 
    $('input:text, input:password').keyup(function() { 
     if ($(this).val() !== "") { 
      $('input:submit').removeAttr('disabled'); 
     } else { 
      $('input:submit').attr('disabled', 'true'); 
     } 
    }); 
}); 

http://jsfiddle.net/tovic/He4Kv/23/

0

ここでこれらの答えの一部は古くなってlilのです私がjQueryスニペットを探していたときに。私はそれらをテストし、彼らは私が思う減価償却のためにもはや正しく機能していないように見えます。

私は自分で作ったので、ここでは新しい入力方法(jQuery> = 3.0)を使用して、入力イベントなどを聞きます。

var inp = $('[type=text]'), 
 
    btn = $('[type=button]') 
 
btn.prop('disabled',true) 
 

 
inp.on('input',() => { 
 
    var empty 
 
    inp.map(v => 
 
    !inp.eq(v).val() ? 
 
     empty = true : false 
 
) 
 
    btn.prop('disabled',empty || false) 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
<form> 
 
\t <input type=text><br> 
 
\t <input type=text><br> 
 
\t <input type=text><br> 
 
\t <input type=button value=Send> 
 
</form>

hereれるjavascript例無地。

関連する問題