1

フォームがあり、フォームの入力テキストフィールドが空であるか、テキストが入力されているかに応じて、送信ボタンを無効/有効にしたい。

keydownこれは、入力テキストフィールドまたはイベントのイベントハンドラーを持つことを意味すると思います。このイベントハンドラーは、keypress発生時に、入力テキストフィールドにテキストが含まれているかどうかをテストし、それに応じて送信ボタンを有効または無効にする必要があります。

イベントは、またはイベントchangeよりも便利なはずですが、問題のコントロールがフォーカスを失うまで発生しないことを除けば、何が良いのでしょうか。ユーザーは何かを入力してからクリックするだけなので、送信ボタン、コントロールがフォーカスを失ったときだけでなく、入力されたテキストによって起動されるイベントハンドラーが必要です。keydownkeypress

私の質問は次のとおりです。

  • 対応するテキストが入力テキストフィールドに挿入される前または後に、イベントが発生しますkeydownか?keypress
  • keydownおよび/またはkeypressイベントはキャンセル可能ですか(対応するテキストが入力されないようにキャンセルできますか)?

編集:参考までに、jQuery検証プラグインはキーアップ時にフォームの有効性を再テストします。

4

1 に答える 1

1

あなたの質問に答えて...

  1. キーダウンまたはキープレスイベントは、JavaScriptを使用してテキストを入力する前にインターセプトできます
  2. 関数をkeydownまたはkeypressイベントにバインドした後、falseを返すことができます。これにより、テキストが入力されなくなります。

jQueryの使用例:

$("#inputfield").live("keydown", function(){
    return false;
});

フォーム送信で値の入力をテストする場合は、jQuery submit()を使用してテストできます。

$("#theform").submit(function() {
    var formval = $("#theinput").val();
    if(formval == "") { //or some better test
        alert("input value"); //or some other alert...
        return false;
    } else {
        return true;
    }
});

falseを返すと、フォームを送信するためのクリックが無効になります。

編集: コメントで言うように、入力フィールドの要件が満たされるまでフォームの送信を無効にしたい場合

$("#inputfield").live("keyup", function(){
    if($("#inputfield").val() == "") {
        $('#button').attr("disabled", true); 
    } else {
        $('#button').attr("disabled", false); 
    }
});

keyup」イベントハンドラーを使用して、テキストを最初に送信できるようにします。私の例を参照してください:jsbinで

于 2009-11-09T19:27:05.833 に答える