تعيين التركيز في الحقل في تحميلها بشكل حيوي DIV

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

  •  07-07-2019
  •  | 
  •  

سؤال

ما هي الطريقة الصحيحة لتعيين التركيز على مجال معين ضمن DIV تحميلها بشكل حيوي؟

$("#display").load("?control=msgs"); // loads the HTML into the DIV
$('#display').fadeIn("fast"); // display it
$("tex#header").focus();          // ?? neither that
$("input#header").focus();        // ?? nor that
$('#display', '#header').focus()  // ?? nor that
$("#header").focus();             // ?? nor that works

ووHTML التالية هي المنال في DIV display:

<div id="display">
<form id="newHeaderForm" class="dataform" action="/" method="post">
    <input id="to" type="hidden" value="22" name="to"/>
    <dl>
        <dt>Header</dt>
        <dd>
            <input id="header" class="large" type="text" name="header" value="" maxlength="128"/>
        </dd>
 </form>
 </div>

والكثير، شكرا جزيلا!

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

المحلول

وظيفة الحمل () هي وظيفة غير متزامن. يجب تعيين التركيز بعد انتهاء المكالمة تحميل ()، وهذا هو في وظيفة رد الاتصال من الحمل ()، لأن خلاف ذلك العنصر الذي نشير إليه #header، لا يوجد حتى الآن. على سبيل المثال:

$("#display").load("?control=msgs", {}, function() { 
  $('#header').focus();
}); 

وكان لي قضايا نفسي حتى مع هذا الحل، لذلك أنا فعلت ذلك لsetTimeout في رد وتعيين التركيز في المهلة إلى إجراء / حقا / تأكد وجود العنصر.

نصائح أخرى

هل حاولت ببساطة اختيار بواسطة Id؟

$("#header").focus();

وكما نرى معرفات يجب أن تكون فريدة من نوعها، وليس هناك حاجة إلى وجود محدد أكثر تحديدا.

نعم، وهذا يحدث عند التعامل مع عنصر التي لا وجود لها حتى الآن (قدم قليل من المساهمين هنا أيضا نقطة جيدة مع معرف فريد). جريت إلى مشكلة مشابهة. أنا أيضا بحاجة إلى تمرير وسيطة إلى وظيفة التلاعب العنصر ليكون قريبا المقدمة.

والحل التحقق من هنا لم يساعدني. وأخيرا وجدت واحدة التي عملت الحق في الخروج من مربع. وانها جميلة جدا، جدا - إغلاق

وبدلا من:

$( '#header' ).focus();
or the tempting:
setTimeout( $( '#header' ).focus(), 500 );

وجرب هذا:

setTimeout( function() { $( '#header' ).focus() }, 500 );

في قانون بلدي، واختبار اجتياز حجة، إلا أن ذلك لا تعمل، تم تجاهل المهلة:

setTimeout( alert( 'Hello, '+name ), 1000 );

وهذا يعمل، مهلة القراد:

setTimeout( function() { alert( 'Hello, '+name ) }, 1000 );

ويمص أن w3schools لا يذكر ذلك.

والاعتمادات تذهب إلى: makemineatriple. كوم .

ونأمل أن يساعد هذا شخص يأتي إلى هنا.

وMartas

$("#display").load("?control=msgs", {}, function() { 
  $('#header').focus();
});

وحاولت ذلك ولكنه لا يعمل، يرجى أن تعطيني المزيد من النصائح لحل هذه المشكلة. شكرا لمساعدتكم

إذا

$("#header").focus();

لا تعمل ثم هناك عنصر آخر على الصفحة الخاصة بك مع معرف من رأس؟

استخدم الحرائق لتشغيل $("#header") ورؤية ما يعود عليه.

وكما أشار اومو بها، يجب عليك تعيين التركيز في وظيفة جاهزة وثيقة. مسج يوفر ذلك لك. وهل حدد على الهوية. على سبيل المثال، إذا كان لديك صفحة تسجيل الدخول:

$(function() { $("#login-user-name").focus(); }); // jQuery rocks!

وهذا يعمل على تحميل الصفحة.

<script type="text/javascript">
    $(function () {
        $("#header").focus();
    });
</script>

والعناصر المضافة حيوي يجب أن تضاف إلى DOM ... clone().append() يضيفه إلى DOM ... والذي يسمح ليتم اختيار عبر مسج.

$("#header").attr('tabindex', -1).focus();
$(function (){
    $('body').on('keypress','.sobitie_snses input',function(e){
        if(e.keyCode==13){
            $(this).blur();
            var new_fild =  $(this).clone().val('');
            $(this).parent().append(new_fild);
            $(new_fild).focus();
        }
    });
});

والأكثر من الخطأ هي لU استخدام الكائن الخطأ تعيين prorepty أو وظيفة. استخدام console.log (new_fild)؛ لنرى الى أي كائن U محاولة تعيين prorepty أو وظيفة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top