29

aの値を変えたときに実行される関数を作ろうとしていますtext input field。テーブルセルがクリックされると、フィールドの値は変更されます。クリックされkeyupたり、貼り付けられたりすることはありません。私はこのようにそれを試しました:

$("#kat").change(function(){ 
    alert("Hello");
});

そして、私はテキストフィールドを持っています:

<input type="text" id="kat" value="0"/>

しかし、それは機能していません。何か助けはありますか?

4

10 に答える 10

28

これは、jQuery ドキュメント ページのコメントからのものです。

古い、HTML5 より前のブラウザーでは、「キーアップ」は間違いなく探しているものです。

HTML5 には、フォームに情報を入力するためにキーが押されるとすぐに発生するという点で、「変更」が動作するはずだったと思われるのとまったく同じように動作する「入力」という新しいイベントがあります。

$('要素').bind('入力',関数);

于 2012-05-03T19:54:24.163 に答える
9

javascriptのテキストフィールドの値を更新しているように私には思えます。onchangeイベントは、データを入力してテキストフィールドからタブアウトした場合にのみトリガーされます。

回避策の1つは、スクリプトからテキストボックスの値を変更するときにテキストボックスの変更イベントをトリガーすることです。下記参照、

$("#kat").change(function(){ 
    alert("Hello");
});


$('<tab_cell>').click (function () {
   $('#kat')
      .val($(this).text()) //updating the value of the textbox 
      .change();           //trigger change event.
});
于 2012-05-03T19:58:59.213 に答える
9

このテクニックは私のために働いています:

$('#myInputFieldId').bind('input',function(){ 
               alert("Hello");
    });

この JQuery docによると、新しいバージョンでバインドするのではなく、「オン」が推奨されることに注意してください。

于 2013-06-05T16:53:17.317 に答える
5

これは私のために働いた

var change_temp = "";
$('#url_key').bind('keydown keyup',function(e){
    if(e.type == "keydown"){
        change_temp = $(this).val();
        return;
    }
    if($(this).val() != change_temp){
        // add the code to on change here 
    }

});
于 2013-12-16T11:54:47.057 に答える
4

jQueryのドキュメントには、「フィールド内のテキストを変更してからクリックすると、[ハンドラーの実行結果]も表示されます。ただし、内容が変更されずにフィールドがフォーカスを失った場合、イベントはトリガーされません。」.

次のように、keyup および keydown イベントを試してください。

$("#kat").keydown(function(){ 
   alert("Hello");
});
于 2012-05-03T19:57:47.637 に答える
3
function search() {
        var query_value = $('input#search').val();
        $('b#search-string').html(query_value);
        if(query_value !== ''){
            $.ajax({
                type: "POST",
                url: "search.php",
                data: { query: query_value },
                cache: false,
                success: function(html){
                    //alert(html);
                    $("ul#results").html(html);
                }
            });
        }return false;    
    }

    $("input#search").live("keyup", function(e) {
        clearTimeout($.data(this, 'timer'));

        var search_string = $(this).val();

        if (search_string == '') {
            $("ul#results").fadeOut();
            $('h4#results-text').fadeOut();
        }else{
            $("ul#results").fadeIn();
            $('h4#results-text').fadeIn();
            $(this).data('timer', setTimeout(search, 100));
        };
    });


and the html 
<input id="search" style="height:36px; font-size:13px;" type="text" class="form-control" placeholder="Enter Mobile Number or Email"  value="<?php echo stripcslashes($_REQUEST["string"]); ?>" name="string" />
        <h4 id="results-text">Showing results for: <b id="search-string">Array</b></h4>
        <ul id="results"></ul>
于 2014-05-08T12:08:53.063 に答える
0

それは私のために働いています。前述のようにブラウザーの問題である可能性があります。または、jQuery が適切に登録されていないか、実際の問題はもっと複雑です (これを確認するための単純なバージョンを作成したため)。PS - 発火させるには、テキスト ボックスの外をクリックする必要がありました。

http://jsfiddle.net/toddhd/Qt7fH/

于 2012-05-03T20:01:32.627 に答える
0

これは、すべてのブラウザーと Jquery <= v1.10 で機能します。

$('#kat').on('keyup', function () {
    alert("Hello");
});

またはあなたが望むように

$('#kat').on('click', function () {
    alert("Hello");
});

テキストボックスの入力フィールドの変更イベントは、期待どおりに発生します。jQuery .Change イベントは、html5 をサポートするブラウザーでのみ正しく機能します。

于 2013-12-01T08:17:42.873 に答える