سؤال
$('#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:
قم بإرفاق معالج بالحدث لجميع العناصر التي تتطابق مع المحدد الحالي ، الآن أو في المستقبل.
مثال:
$('#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 () كما يوحي الآخرون إذا كنت ترغب في طمس الحقل الجديد الذي أضفته.