35

すべてのテキストフィールドが各 keyup() と focus(); で有効かどうかを検出するフォームがあります。それらがすべて有効であれば、ユーザーが押すことができる送信ボタンが有効になります。ただし、ユーザーがブラウザのオートコンプリート機能を使用してテキスト入力の 1 つを入力すると、送信ボタンが有効になりません。

jQueryを使用して、どのように変更されたかに関係なく、入力のいずれかが変更されたかどうかを検出する方法はありますか?

4

9 に答える 9

26

on inputを使用して、 のテキストベースの変更 (ctrlや などのキーを除くshift)を検出することができます<input>

例えば:

$(input).on('input', function() { 
    console.log($(this).val()); 
});
于 2014-07-14T21:15:23.707 に答える
17

jQuery 変更イベントは、ぼかしでのみ発生します。入力すると keyup イベントが発生します。オートコンプリート オプションをクリックしても起動しません。これを検出する方法も探していますが、現在は

$(selector).bind("change keyup",function(){
    //Do something, probably with $(this).val()
});

しかし、それは問題を完全に解決しません...

于 2011-03-17T14:52:41.103 に答える
13

使った自分

$(selector).on("change keyup blur input", function() {});

これはChromeでうまくいきました。inputオートコンプリートで機能するようになったのです。

于 2015-05-14T20:35:27.480 に答える
0

jQuery.change()関数を使用できます。

ページが最初に読み込まれた後、フォーム全体を検証して、実際に入力されていないことを確認できます。その後.change()、フォームで変更があったかどうかを確認し、変更があった場合はフォームを再度検証できます。 。

$(document).ready(function() {
   // validate form once, just to be sure (if valid, activate submit button)
});
...
<form>
  <input class="target" type="text" value="Field 1" />
  <select class="target">
    <option value="option1" selected="selected">Option 1</option>
    <option value="option2">Option 2</option>
  </select>
</form>
<script type="text/javascript">     
    $('.target').change(function() {
        alert('Something changed');
        // Try validating form again (if valid, activate submit button)
    });
</script>

次のプラン

もう1つのオプションは、送信ボタンを常にクリック可能にすることですが、これを使用.submit()してフォームバリデーターにバインドします。次に、フォームが有効な場合は続行します。フォームが有効でない場合は、フォーム.preventDefault()の送信を停止するために使用してください.....また、欠落しているフィールドを示す警告メッセージも表示されます。

于 2010-07-22T23:10:54.050 に答える
0

答えはこの質問で与えられました。jQueryは使用しませんが、オートコンプリートで機能します。

jsonpropertychangeイベントを使用します。

于 2012-06-17T09:32:16.603 に答える
0

同じ問題が発生した後、適切な解決策があります。フォーム フィールドに通常どおりキーアップを設定し、周囲の div にマウスオーバーします。したがって、オートコンプリート オプションをクリックすると、マウスが div の上に移動します。

$("#emailaddress").bind("keyup", function() {
    displayFullSubcribeForm();
});

$(".center_left_box").bind("mouseover", function() {
    displayFullSubcribeForm();
});
于 2012-12-20T13:10:12.830 に答える
-2

これは究極のソリューションであり、動作が保証されています

$(document).bind('mouseover', function(){
        liveValidate();
    });
于 2015-06-23T02:59:09.610 に答える