-1

私はゆっくりと失望し、最後の神経が失われます。テーブルに要素があります。この要素をクリックするとテキストボックスが表示され、Enterキーを押すと、テキストボックスの値がphp-scriptによって処理されます。これまでのところ、これは完璧に機能しますが...ボックスの外側をクリックすると、他の要素をクリックすると、を押したときのアクションと同じポップアップウィンドウが表示されます(blablaを変更する必要がありますか)。エンターボタン。focusout、blur、onchangeなどを試してみましたが、IEはすぐにポップアップを起動するため、テキストボックスに何も入力する機会がありません。ここに、enter-action(Enterボタン)でのみうまく機能する私のコードがあります:

function modify(value, item_ID, attr_NAME, obj_name){
    $('.ajax').html($('.ajax_input').val());
    $('.ajax').removeClass('ajax');
    $(value).addClass('ajax');
    $(value).html(
             '<input id="editbox" size="' + $(value).text().length
                     + '" type="text" value="' + $(value).text()
                     + '" onkeydown="confirmAction(this.value, ' + item_id
                     + ", '" + attr_name + "'" + ", '" + obj_name + "'" + ')">');
    $('#editbox').focus();
}

動作するようになりました:

$('.ajax').html($('.ajax input').val());
    $('.ajax').removeClass('ajax');
    $(value).addClass('ajax');
    $(value).html(
            '<input id="editbox"' + ' type="text" value="' + $(value).text() + '"/>');
    $('#editbox').focus();

    $('#editbox').keydown(function(event) {
        if (event.which == 13) {
            $(document).attr('helpAttr', false);
            confirmAction(this.value, item_id, attr_name, obj_name);
        }
    });
    $('#editbox').blur(
            function() {
                if ($(document).attr('helpAttr')
                        || ($(document).attr('helpAttr') == undefined)) {
                    confirmAction(this.value, item_id, attr_name, obj_name);
                } else {
                    $(document).attr('helpAttr', true);
                }
            });
4

1 に答える 1

1

これはEnterキーを処理します:

$('#editbox').keydown(function(event) {
  if (event.which == 13) {
    confirmAction(...);
 }
}

これは、外側のクリックを処理します。

$('#editbox').blur(function() {
    confirmAction(...);
}
于 2013-03-11T18:06:31.307 に答える