سؤال

$('#lPass').focus(function() {  
        if (this.value == this.defaultValue) this.value = '';
        $(this).after('<input type="password" id="lPass" size="10" value="'+this.value+'"/>').remove();
}).blur(function() {
    alert(1);
});

<input id="lPass" type="text" size="10" value="Password"/>


على طمس لا يعمل.
أيه أفكار؟

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

المحلول

يستخدم يعيش بدلا من التركيز والطمس

.live () تم إهمالها. يستخدم .تشغيل() و .إيقاف() في حين أن.

نظرًا لأنك تقوم بإضافة الإدخال في وقت التشغيل ، فإنه يضيف إلى الصفحة بدون الأحداث ، Live:

قم بإرفاق معالج بالحدث لجميع العناصر التي تتطابق مع المحدد الحالي ، الآن أو في المستقبل.

مثال:

$('#lPass').on('focus', function() {
    if (this.value == this.defaultValue) this.value = '';
    $(this).after('<input type="password" id="lPass" size="10" value="' + this.value + '"/>').remove();
});


$('#lPass').on('blur', function() {
    alert(1);
});

نصائح أخرى

هذا للرمز الدقيق الخاص بك:

$('#lPass').live('focus', function() {  
    if (this.value == this.defaultValue) this.value = '';
    $(this).after('<input type="password" id="lPass" size="10" value="'+this.value+'"/>').remove();
}).live('blur', function() {
    alert(1);
});

المشكلة الأولى التي أراها هي أن محددك هو معرف #LPPASS ، ومع ذلك ، في هذا المحدد ، تحاول إدراج علامة جديدة مع نفس المعرف. يجب أن يكون المعرف فريدًا على الصفحة. ثم تحاول الإزالة باستخدام .remove () - يبدو أنه لا معنى لي.

فقط استخدم .remove () أو استخدم معرفًا جديدًا ...

أو توضيح ما تريد القيام به.

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

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