هل من الممكن لحدث معين في جافا سكريبت استدعاء حدث اخر .
مثلا اي تغير في نص الادخال يستدعي حدث الضغط على اي زر بدون تدخل المستخدم.
مرحبا سالم،
بالطبع يمكن جعل حدث معين في JavaScript يستدعي حدثا آخر، وهذه العملية تدعى:
(Events Binding - Events Triggering )
فمثلا سنقوم بانشاء صفحة html تحوي على: حقل إدخال - زر - نص paragraph كالتالي:
<h1>Binding more than event example</h1>
<input type="text" id="text">
<button type="button" id="btn">Button</button>
<p id="res">This Result should be changed.</p>
سنقوم بإنشاء حدث (onkeydown) للكتابة ضمن حقل الادخال ذو المعرف id=text ، وظيفة هذا الحدث أن يقوم بدوره بتحريض الحدث الثاني وهو الضغط على الزر،
وسنقوم بإنشاء الحدث الثاني للضغط على الزر (onclick)، وهو : أن يتغير محتوى الكتابة ضمن الـ paragraph عند الضغط على الزر. كالتالي:
document.getElementById("text").onkeydown = function (e) {
document.getElementById("btn").click();
};
document.getElementById("btn").onclick = function (c) {
document.getElementById("res").innerText = "Button was clicked";
}
-> عند الكتابة في حقل الادخال
-> سيتم تفعيل حدث الكتابة ضمن الحقل والذي بدوره
-> سيقوم بتفعيل حدث الضغط على الزر
-> والذي بدوره سيقوم بتغيير الكتابة ضمن الـ paragraph
نعم، بما أن سؤالك في جافاسكريبت وفي حال لا تستخدم JQuery يمكنك قدح أكثر من حدث ضمن تابع واحد أو ضمن حدث واحد عن طريق:
document.dispatchEvent(event)
مثال:
// Add an event listener
document.addEventListener("name-of-event", function(e) {
console.log(e.detail); // Prints "Example of an event"
});
// Create the event
var event = new CustomEvent("name-of-event", { "detail": "Example of an event" });
// Dispatch/Trigger/Fire the event
document.dispatchEvent(event);
document.dispatchEvent(event2);
document.dispatchEvent(event3);
حيث تقوم باستدعاء: document.dispatchEvent(event) المختلفة ضمن نفس التابع
التعليقات