لماذا لا يمكن تغيير قيمة الإدخال عند الضغط على الهروب

StackOverflow https://stackoverflow.com/questions/1253770

سؤال

لدي إدخال (خارج النموذج) الذي يلتقط اسم الصورة. يجب على المستخدم ملء اسما جديدا وضرب Enter. رد الاتصال AJAX تعيد تسمية الصورة. هذا يعمل.

أرغب في إضافة القدرة على "إعادة تعيين" محتوى الإدخال عندما يضغط المستخدم على الهروب (# 27). لكنني غير قادر على ملء قيمة المدخلات ذات القيمة الخاصة بي.

الرمز هو

<input id="escapeInput" value="this is test" /> <input type="button" id="setDetaultToEscapeInput" value="Set default" />

jQuery(document).ready(function() {
    jQuery("#escapeInput").keydown(function(evt) {
        if (evt.keyCode == 27) {
            var input = jQuery(this);
            input.val('some default value') // doesn't work
            input[0].value = 'some default value 2'; // doesn't work
            input.parent().append('changed');
        }
    });
    jQuery("#setDetaultToEscapeInput").click(function() {
        var input = jQuery("#escapeInput");
        input.val('some default value') // works ok
    });
});

الشيء المثير للاهتمام هو أنه إذا قمت بالاختبار على سبيل المثال لشخصية "A" (IF (EVT.KEYCODE == 65))، يعمل الرمز. أي فكرة عن كيفية التعامل معها؟ لا يعمل فقط في FF (Opera و IE8 على ما يرام).

هل كانت مفيدة؟

المحلول

حاول استخدام حدث KeyUP بدلا من ذلك.

$(function() {
    $("#escapeInput").keyup(function(e) {
        if (e.keyCode == 27) {
            $(this).val("some default value");
        }
    });
});

نصائح أخرى

جرب هذا

        $(document).ready(function() {
            $("#escapeInput").keypress(function(evt) {
                    var keycode = null;
                    if(evt.keyCode) {
                         keycode = evt.keyCode;
                    } else {
                         keycode = evt.which;
                    }
                    if (keycode == 27) {
                $(this).val("some default value");
                }
            });
        });
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top