الفرق بين المراجعتين لصفحة: «HTML/input/button»
ط استبدال النص - ':(Content sectioning|Edits|Embedded content|Forms|Inline text semantics|Input Types|Interactive elements|Main Root|Metadata|Multimedia|Scripting|Table|Text Content)' ب':HTML $1' |
Wael-aldaghma (نقاش | مساهمات) طلا ملخص تعديل |
||
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة) | |||
سطر 3: | سطر 3: | ||
وعلى الرغم من أنَّ عناصر <code>[[HTML/input|<input>]]</code> ذات النوع <code>button</code> صحيحة تمامًا في HTML، لكن من المفضّل استخدام عنصر <code>[[HTML/button|<button>]]</code> الجديد لإنشاء الأزرار، لأن له ميزات إضافية، مثل دعمه للقيمة <code>menu</code> في الخاصية <code>type</code> التي تعني أنَّ الزر يستعمل لتفعيل قائمة منبثقة، والسماح بإضافة نص اللافتة للعنصر <code>[[HTML/button|<button>]]</code> بين وسم البداية ووسم النهاية مما يمكّننا من إضافة عناصر HTML الأخرى ضمنه بما في ذلك الصور.<syntaxhighlight lang="html"> | وعلى الرغم من أنَّ عناصر <code>[[HTML/input|<input>]]</code> ذات النوع <code>button</code> صحيحة تمامًا في HTML، لكن من المفضّل استخدام عنصر <code>[[HTML/button|<button>]]</code> الجديد لإنشاء الأزرار، لأن له ميزات إضافية، مثل دعمه للقيمة <code>menu</code> في الخاصية <code>type</code> التي تعني أنَّ الزر يستعمل لتفعيل قائمة منبثقة، والسماح بإضافة نص اللافتة للعنصر <code>[[HTML/button|<button>]]</code> بين وسم البداية ووسم النهاية مما يمكّننا من إضافة عناصر HTML الأخرى ضمنه بما في ذلك الصور.<syntaxhighlight lang="html"> | ||
<input type="button" value=" | <input type="button" value="اضغط هنا"> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== الخاصية <code>value</code> == | == الخاصية <code>value</code> == | ||
تحتوي الخاصية <code>value</code> في الحقل <code>button</code> على سلسلة نصية (<code>DOMString</code>) التي ستستعمل كلافتة للزر.<syntaxhighlight lang="html"> | تحتوي الخاصية <code>value</code> في الحقل <code>button</code> على سلسلة نصية (<code>DOMString</code>) التي ستستعمل كلافتة للزر.<syntaxhighlight lang="html"> | ||
<input type="button" value=" | <input type="button" value="اضغط هنا"> | ||
</syntaxhighlight>أما إذ لم تُحدَّد قيمة للخاصية value فسيظهر زر فارغ:<syntaxhighlight lang="html"> | </syntaxhighlight>أما إذ لم تُحدَّد قيمة للخاصية value فسيظهر زر فارغ:<syntaxhighlight lang="html"> | ||
<input type="button"> | <input type="button"> | ||
سطر 22: | سطر 20: | ||
سنبدأ بإنشاء زر بسيطة مرتبط بدالة لمعالجة الحدث <code>click</code> لبدء تشغيل آلة ما (حيث سنُبدِّل قيمة الخاصية <code>value</code> في العنصر <code>[[HTML/input|<input>]]</code> والمحتوى النصي للفقرة <code>[[HTML/p|<nowiki><p></nowiki>]]</code> التي تلي العنصر):<syntaxhighlight lang="html"> | سنبدأ بإنشاء زر بسيطة مرتبط بدالة لمعالجة الحدث <code>click</code> لبدء تشغيل آلة ما (حيث سنُبدِّل قيمة الخاصية <code>value</code> في العنصر <code>[[HTML/input|<input>]]</code> والمحتوى النصي للفقرة <code>[[HTML/p|<nowiki><p></nowiki>]]</code> التي تلي العنصر):<syntaxhighlight lang="html"> | ||
<form> | <form> | ||
<input type="button" value=" | <input type="button" value="تشغيل الجهاز"> | ||
</form> | </form> | ||
<p> | <p>الجهاز متوقف.</p> | ||
</syntaxhighlight>شيفرة JavaScript المسؤولة عن سلوك الحقل <code>button</code>:<syntaxhighlight lang="javascript"> | </syntaxhighlight>شيفرة JavaScript المسؤولة عن سلوك الحقل <code>button</code>:<syntaxhighlight lang="javascript"> | ||
var btn = document.querySelector('input'); | var btn = document.querySelector('input'); | ||
سطر 32: | سطر 30: | ||
function updateBtn() { | function updateBtn() { | ||
if (btn.value === ' | if (btn.value === 'تشغيل الجهاز') { | ||
btn.value = ' | btn.value = 'إيقاف الجهاز'; | ||
txt.textContent = ' | txt.textContent = 'لقد اشتغل الجهاز!'; | ||
} else { | } else { | ||
btn.value = ' | btn.value = 'تشغيل الجهاز'; | ||
txt.textContent = ' | txt.textContent = 'لقد توقف الجهاز.'; | ||
} | } | ||
} | } | ||
سطر 52: | سطر 50: | ||
</form> | </form> | ||
<p>The machine is stopped.</p> | <p>The machine is stopped.</p> | ||
</syntaxhighlight>المشكلة مع المثال السابق هي أنَّ المستخدم لن يعرف ما هو اختصار لوحة المفاتيح للزر السابق! وبالتالي عليك أن توفِّر هذه المعلومات في موقعك بشكلٍ لا يتداخل مع تصميم الموقع (مثل توفير رابط يشرح ما هي اختصارات لوحة المفاتيح المستعملة في الموقع). | </syntaxhighlight>المشكلة مع المثال السابق هي أنَّ المستخدم لن يعرف ما هو اختصار لوحة المفاتيح للزر السابق! وبالتالي عليك أن توفِّر هذه المعلومات في موقعك بشكلٍ لا يتداخل مع [https://academy.hsoub.com/programming/general/%D8%A7%D9%84%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D9%85%D9%88%D8%AC%D8%B2-%D8%A5%D9%84%D9%89-%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%D9%85%D9%88%D9%82%D8%B9-%D8%A5%D9%84%D9%83%D8%AA%D8%B1%D9%88%D9%86%D9%8A-r1883/ تصميم الموقع] (مثل توفير رابط يشرح ما هي اختصارات لوحة المفاتيح المستعملة في الموقع). | ||
=== تفعيل وتعطيل الأزرار === | === تفعيل وتعطيل الأزرار === | ||
لتعطيل أحد الأزرار فاستخدم الخاصية <code>disabled</code> عليه، كما في المثال الآتي:<syntaxhighlight lang="html"> | لتعطيل أحد الأزرار فاستخدم الخاصية <code>disabled</code> عليه، كما في المثال الآتي:<syntaxhighlight lang="html"> | ||
<input type="button" value=" | <input type="button" value="زر معطّل" disabled> | ||
</syntaxhighlight>يمكننا تفعيل وتعطيل الأزرار في وقت التنفيذ عبر ضبط قيمة الخاصية <code>disabled</code> إلى <code>true</code> أو <code>false</code>. | </syntaxhighlight>يمكننا تفعيل وتعطيل الأزرار في وقت التنفيذ عبر ضبط قيمة الخاصية <code>disabled</code> إلى <code>true</code> أو <code>false</code>. | ||
هذا مثال عن تفعيل وتعطيل أحد الأزرار باستخدام JavaScript، إذا سيبدأ الزر وهو مُفعّل وإذا ضغطتَ عليه فسيعطّل باستخدام <code>btn.disabled = true</code>، ثم ستُستدعى الدالة <code>setTimeout()</code> لإعادة الزر إلى حالته الأصلية (أي مفعّل) بعد ثانيتين:<syntaxhighlight lang="html"> | هذا مثال عن تفعيل وتعطيل أحد الأزرار باستخدام JavaScript، إذا سيبدأ الزر وهو مُفعّل وإذا ضغطتَ عليه فسيعطّل باستخدام <code>btn.disabled = true</code>، ثم ستُستدعى الدالة <code>setTimeout()</code> لإعادة الزر إلى حالته الأصلية (أي مفعّل) بعد ثانيتين:<syntaxhighlight lang="html"> | ||
<input type="button" value=" | <input type="button" value="زر مفعّل"> | ||
</syntaxhighlight>شيفرة JavaScript:<syntaxhighlight lang="javascript"> | </syntaxhighlight>شيفرة JavaScript:<syntaxhighlight lang="javascript"> | ||
var btn = document.querySelector('input'); | var btn = document.querySelector('input'); | ||
سطر 69: | سطر 66: | ||
function disableBtn() { | function disableBtn() { | ||
btn.disabled = true; | btn.disabled = true; | ||
btn.value = ' | btn.value = 'زر معطّل'; | ||
window.setTimeout(function() { | window.setTimeout(function() { | ||
btn.disabled = false; | btn.disabled = false; | ||
btn.value = ' | btn.value = 'زر مفعّل'; | ||
}, 2000); | }, 2000); | ||
} | } |
المراجعة الحالية بتاريخ 08:00، 6 أغسطس 2023
عناصر <input>
ذات النوع button
تُعرَض كأزرار عادية، والتي يمكن برمجتها للتحكم بأي شيء في الصفحة عبر ربط دالة معالجة أحداث معها (التي تُعالِج الحدث click
عادةً).
وعلى الرغم من أنَّ عناصر <input>
ذات النوع button
صحيحة تمامًا في HTML، لكن من المفضّل استخدام عنصر <button>
الجديد لإنشاء الأزرار، لأن له ميزات إضافية، مثل دعمه للقيمة menu
في الخاصية type
التي تعني أنَّ الزر يستعمل لتفعيل قائمة منبثقة، والسماح بإضافة نص اللافتة للعنصر <button>
بين وسم البداية ووسم النهاية مما يمكّننا من إضافة عناصر HTML الأخرى ضمنه بما في ذلك الصور.
<input type="button" value="اضغط هنا">
الخاصية value
تحتوي الخاصية value
في الحقل button
على سلسلة نصية (DOMString
) التي ستستعمل كلافتة للزر.
<input type="button" value="اضغط هنا">
أما إذ لم تُحدَّد قيمة للخاصية value فسيظهر زر فارغ:
<input type="button">
استخدام الأزرار
الحقل button
ليس له سلوك افتراضي (بينما أقرباؤه submit
و reset
يستعملان لإرسال بيانات النموذج وإعادة تعيين حقوله، على التوالي وبالترتيب).
يجب كتابة شيفرة JavaScript التي تكون مسؤولة عن جعل الزر يؤدي عملًا ما.
زر بسيط
سنبدأ بإنشاء زر بسيطة مرتبط بدالة لمعالجة الحدث click
لبدء تشغيل آلة ما (حيث سنُبدِّل قيمة الخاصية value
في العنصر <input>
والمحتوى النصي للفقرة <p>
التي تلي العنصر):
<form>
<input type="button" value="تشغيل الجهاز">
</form>
<p>الجهاز متوقف.</p>
شيفرة JavaScript المسؤولة عن سلوك الحقل button
:
var btn = document.querySelector('input');
var txt = document.querySelector('p');
btn.addEventListener('click', updateBtn);
function updateBtn() {
if (btn.value === 'تشغيل الجهاز') {
btn.value = 'إيقاف الجهاز';
txt.textContent = 'لقد اشتغل الجهاز!';
} else {
btn.value = 'تشغيل الجهاز';
txt.textContent = 'لقد توقف الجهاز.';
}
}
ستحصل الشيفرة السابقة على مرجعية إلى كائن HTMLInputElement
الذي يُمثِّل العنصر <input>
في شجرة DOM، وستحفظ تلك المرجعية في المتغير btn
؛ ثم ستستعمل الدالة addEventListener()
لتحديد ما هي الدالة التي ستُشغَّل عند وقوع الحدث click
على الزر.
إضافة اختصار إلى الزر عبر لوحة المفاتيح
اختصارات لوحة المفاتيح -والتي تعرف أيضًا باسم مفاتيح الوصول (access keys)- تسمح للمستخدم بتفعيل زر باستخدام تجميعة من الأزرار على لوحة المفاتيح.
لإضافة اختصار لوحة مفاتيح إلى زرٍ ما فاستعمل الخاصية العامة accesskey
.
على سبيل المثال، جعلنا القيمة s قيمةً للخاصية accesskey
، أي عليك أن تضغط على زر s
إضافةً إلى الزر الذي يستخدم لاختصارات لوحة المفاتيح على نظام تشغيلك (الزر alt
على نظامَي ويندوز ولينكس).
<form>
<input type="button" value="Start machine" accesskey="s">
</form>
<p>The machine is stopped.</p>
المشكلة مع المثال السابق هي أنَّ المستخدم لن يعرف ما هو اختصار لوحة المفاتيح للزر السابق! وبالتالي عليك أن توفِّر هذه المعلومات في موقعك بشكلٍ لا يتداخل مع تصميم الموقع (مثل توفير رابط يشرح ما هي اختصارات لوحة المفاتيح المستعملة في الموقع).
تفعيل وتعطيل الأزرار
لتعطيل أحد الأزرار فاستخدم الخاصية disabled
عليه، كما في المثال الآتي:
<input type="button" value="زر معطّل" disabled>
يمكننا تفعيل وتعطيل الأزرار في وقت التنفيذ عبر ضبط قيمة الخاصية disabled
إلى true
أو false
.
هذا مثال عن تفعيل وتعطيل أحد الأزرار باستخدام JavaScript، إذا سيبدأ الزر وهو مُفعّل وإذا ضغطتَ عليه فسيعطّل باستخدام btn.disabled = true
، ثم ستُستدعى الدالة setTimeout()
لإعادة الزر إلى حالته الأصلية (أي مفعّل) بعد ثانيتين:
<input type="button" value="زر مفعّل">
شيفرة JavaScript:
var btn = document.querySelector('input');
btn.addEventListener('click', disableBtn);
function disableBtn() {
btn.disabled = true;
btn.value = 'زر معطّل';
window.setTimeout(function() {
btn.disabled = false;
btn.value = 'زر مفعّل';
}, 2000);
}
إذا لم تُحدَّد الخاصية disabled
فسيرث الزر قيمتها من العنصر الأب، أي من الممكن تفعيل وتعطيل مجموعة من العناصر في وقتٍ واحد بوضعها ضمن حاوية مثل العنصر <fieldset>
ثم استخدام الخاصية disabled
على تلك الحاوية.
المثال الآتي يُبيّن طريقة فعل ذلك عمليًا، وهو شبيهٌ جدًا بالمثال السابق إلا أنَّه يضبط الخاصية disabled
على العنصر <fieldset>
عندما يُضغَط على أوّل زر، مما يؤدي إلى تعطيل جميع الأزرار لمدة ثانيتين حتى تُفعّل مجددًا:
<fieldset>
<legend>Button group</legend>
<input type="button" value="Button 1">
<input type="button" value="Button 2">
<input type="button" value="Button 3">
</fieldset>
شيفرة JavaScript:
var btn = document.querySelector('input');
var fieldset = document.querySelector('fieldset');
btn.addEventListener('click', disableBtn);
function disableBtn() {
fieldset.disabled = true;
window.setTimeout(function() {
fieldset.disabled = false;
}, 2000);
}
التحقق من الحقل
ليس هنالك فائدة من التحقق من قيمة الحقل button
.
دعم المتصفحات
Chrome | Firefox | Edge | Safari | Opera |
---|---|---|---|---|
مدعوم | مدعوم | مدعوم | مدعوم | مدعوم |