الفرق بين المراجعتين ل"HTML/input/button"

من موسوعة حسوب
< HTML‏ | input
اذهب إلى التنقل اذهب إلى البحث
ط (تغيير ترتيب التصنيفات)
ط
 
(3 مراجعات متوسطة بواسطة مستخدم واحد آخر غير معروضة)
سطر 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="Click Me">
+
<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="Click Me">
+
<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="Start machine">
+
   <input type="button" value="تشغيل الجهاز">
 
</form>
 
</form>
<p>The machine is stopped.</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 === 'Start machine') {
+
   if (btn.value === 'تشغيل الجهاز') {
     btn.value = 'Stop machine';
+
     btn.value = 'إيقاف الجهاز';
     txt.textContent = 'The machine has started!';
+
     txt.textContent = 'لقد اشتغل الجهاز!';
 
   } else {
 
   } else {
     btn.value = 'Start machine';
+
     btn.value = 'تشغيل الجهاز';
     txt.textContent = 'The machine is stopped.';
+
     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="Disable me" disabled>
+
<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="Enabled">
+
<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 = 'Disabled';
+
   btn.value = 'زر معطّل';
 
   window.setTimeout(function() {
 
   window.setTimeout(function() {
 
     btn.disabled = false;
 
     btn.disabled = false;
     btn.value = 'Enabled';
+
     btn.value = 'زر مفعّل';
 
   }, 2000);
 
   }, 2000);
 
}
 
}
سطر 114: سطر 111:
 
|مدعوم
 
|مدعوم
 
|}
 
|}
[[تصنيف:HTML]]
+
[[تصنيف:HTML|{{SUBPAGENAME}}]]
[[تصنيف:Forms]]
+
[[تصنيف:HTML Forms|{{SUBPAGENAME}}]]
[[تصنيف:Input Types]]
+
[[تصنيف:HTML Input Types|{{SUBPAGENAME}}]]

المراجعة الحالية بتاريخ 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
مدعوم مدعوم مدعوم مدعوم مدعوم