الشحن جافا سكريبت السمة الأحداث المختلفة معالج/نوع

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

سؤال

أنا حاليا أحاول إنشاء صفحة ويب على الكمبيوتر شاشة تعمل باللمس, و قد لاحظت أن (مع أصابع الدهون) التي onclick الأحداث من الصعب حقا أن تؤدي ، حسب مساحة إصبعي عموما أسباب المؤشر للتحرك بينما أنا "فوق".

الحل أريد أن استخدام إعادة توجيه onmousedown الأحداث onclick.كيف يمكنني جعل هذا العمل ؟

أفضل إجابة سيكون على غرار:

<input type="radio" onmousedown="this.onclick()"/>

(ولكن بالطبع في حالة عمل)

تحرير:بلدي محددة مثال على أزرار الراديو - عندما يتم التحقق من الآخرين دون رادع;أنا لا أريد تكرار هذا السلوك في حدث مخصص عندما يكون المستعرض يعطيها لي مجانا.

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

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

المحلول

حسنا, بعد تعديلاتك يصبح أكثر وضوحا - ما تريد القيام به هو محاكاة المستخدم النقر على السيطرة عندما mousedown الحدث هو النار.

اثنين من الخيارات:

  1. يمكنك اطلاق النار دوم الحدث هذا البرنامج التعليمي على دوم الأحداث يناقش هذا (انظر يدويا اطلاق الأحداث القسم); إطلاق جافا سكريبت الأحداث يغطي الأرض مماثلة.
  2. مجموعة onmouseout="this.checked = true;", أيالنقر على زر الراديو "الشيكات"/تحديد زر الراديو.

نصائح أخرى

لماذا لا مجرد التعامل مع الحدث mousedown؟

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

$().live('mousedown', function() { this.click(); });

وربما هذا يصلح لك

document.getElementById("yourinput").onmousedown = function() {
   this.click();
}

وبالإضافة إلى ذلك هل يمكن أن طريقتك أزرار الإدخال / المجالات لتكون أكبر قليلا، لإمكانية الوصول بشكل أفضل عبر المؤشر.

ومن الأفضل أن يكون لديك وظيفة واحدة للتعامل مع كلا الحدثين، منها مثلا.

var function = foo(e) {
   ...
};

<input onclick="foo();" onmousedown="foo();"/>

والأفضل من ذلك استخدام غير مزعجة جافا سكريبت، على سبيل المثال (إذا كنت تستخدم YUI):

<input id="input-el"/>

var function = foo(e) {
   ...
};

var Event = YAHOO.util.Event;

Event.on('input-el', 'click', foo);
Event.on('input-el', 'mousedown', foo);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top