0

ボタンを有効にするために最小の長さの文字列が必要なテキスト領域があります。私はjQueryバリデータープラグインを使用していますが、char 10に到達するまではすべて正常に機能します。その時点で、最小文字数のメッセージは消えますが、ボタンはまだ無効になっています。ボタンを有効にするには、別の文字(現在は11)を入力する必要があります。文字を削除するときの機能も正しくありません。ボタンは、残り8文字になるまで有効のままになります。その時点でボタンは無効になっています。何が起こっているのかわかりません。どんな助けでもいただければ幸いです。

これがhtmlです:

<textarea id="otherBox" cols="50" class="required" minlength="10"></textarea>
<input type="button" id="sButton" value="Cancel e-Bill" disabled="true" >

javascript:

var goodLenth = false; 
$(document).ready(function(){
    var validator = $("#my_form").validate();


    $("#otherBox").keypress(function(){
        goodLength = validator.element("#otherBox");
        if(goodLenth){
            $("#sButton").removeAttr("disabled");
        }
        else{
            $("#sButton").attr("disabled","true");
        }
   });
});

これが実際のフィドルですhttp://jsfiddle.net/mg2Bv/

4

2 に答える 2

1

プラグインの組み込みのコールバックイベント関数を使用するだけです...そうすれば、外部でイベントを照合する必要はありません。冗長性が低く、効率が高く、保守が容易です。

success:-要素が正常に検証されたときのコールバック関数。

highlight:-要素が検証に失敗した場合のコールバック関数。

$(document).ready(function () {
    $("#my_form").validate({
        success: function(label) {
            $("#sButton").prop("disabled", false);
        },
        highlight: function(element, errorClass) {
            $("#sButton").prop("disabled", true);
        }
    });
});

作業デモ:

http://jsfiddle.net/Ufx9G/

ドキュメンテーション:

http://docs.jquery.com/Plugins/Validation/validate#toptions

ノート:

1)を完全に削除するため、使用removeAttr()しないでください。attribute

2)また、技術的にはaではなくaのprop()代わりに使用する必要があります。attr()disabledpropertyattribute

参照: http ://api.jquery.com/prop/

メソッドの代わりに、メソッドを.prop()使用して設定する必要があります。disabledchecked.attr()

于 2013-01-19T16:24:51.293 に答える
0

これを試して....

keyPressを使用しないでください、これは消去キーをキャッチしません...

keyUpを使用...

$(document).ready(function(){
    var validator = $("#my_form").validate();


    $("#otherBox").keyup(function(){
        goodLength = validator.element("#otherBox");
        if(goodLenth){
            $("#sButton").removeAttr("disabled");
        }
        else{
            $("#sButton").attr("disabled","true");
        }
   });
});

このデモを見る

ご挨拶。

于 2013-01-19T16:30:20.867 に答える