أوقف إحدى الوظائف من التشغيل في javascript ، إذا كان div فارغًا

أحاول معرفة ما إذا كان div فارغًا قبل السماح بنسخ الرمز لأنني عثرت على مستخدمين في الحكمة اللانهائية التي يريدون تحديد مربع الاختيار "نفس الفوترة" ونسخ نموذج شحن فارغ.

في هذه اللحظة ، مع رمز أدناه أحاول أن أقول ما إذا كان اسم الشحن الخاص بهم هو إيقاف فارغ ، رمي مربع التنبيه ثم إيقاف الدالة.

ما وجدته هو أنه يتم طرح التنبيه ولكن لا تزال وظيفة نسخ نموذج الشحن تعمل.

اسم الشحن ، وهذا قيد التدقيق

<div class="chkField">
        
        <input name="shipping_firstname" onchange="clearContent(this);" type="text" id="shipping_firstname" value="[shipping_firstname]" size="15" tabindex="16" class="txtBoxStyle" />
        <!--START: req_shipping_firstname--> 
         
        <!--END: req_shipping_firstname-->
        <div class="clear"></div>
      </div>

مربع اختيار الفواتير الذي ينسخ حقل الشحن في حقل الفوترة

  <div class="sameAsBilling1">
            <input type="checkbox" name="sameAsBilling" id="sameAsBilling"  onclick="checkEmpty();showHideShipping();"/>
            
            <div class="clear"></div>
          </div>

تحقق فارغًا ، ويلقي مربع التنبيه

function checkEmpty(){

    var shippingName = document.getElementById('shipping_firstname').innerHTML;

    if(shippingName === ""){

        alert("Please fill in your Name");
      return;

}

تعمل وظيفة النسخ لنسخ حقل الشحن بالكامل.

function showHideShipping() {

if (document.billing.sameAsBilling.checked) {
      add_overlay("billing_info", 0);

       if (get_Element('billing_firstname').value != get_Element('shipping_firstname').value) {
        get_Element('billing_firstname').value = get_Element('shipping_firstname').value;
        get_Element('billing_lastname').value = get_Element('shipping_lastname').value;
        get_Element('billing_company').value = get_Element('shipping_company').value;
        get_Element('billing_phone').value = get_Element('shipping_phone').value;
        get_Element('billing_address').value = get_Element('shipping_address').value;
        get_Element('billing_address2').value = get_Element('shipping_address2').value;
        get_Element('billing_city').value = get_Element('shipping_city').value;
        get_Element('billing_zip').value = get_Element('shipping_zip').value;
        get_Element('billing_country').value = get_Element('shipping_country').value;
        populateState('billing_state', 'billing_country');
        get_Element('billing_state').value = get_Element('shipping_state').value;
      }
    } else {
      remove_overlay("billing_info");

    get_Element('billing_firstname').value = '';
      get_Element('billing_lastname').value = '';
      get_Element('billing_company').value = '';
      get_Element('billing_phone').value = '';
      get_Element('billing_address').value = '';
      get_Element('billing_address2').value = '';
      get_Element('billing_city').value = '';
      get_Element('billing_zip').value = '';
      get_Element('billing_country').value = get_Element('shipping_country').value;
      populateState('billing_state', 'billing_country');
      get_Element('billing_state').value = get_Element('shipping_state').value;


    }
}
0
أنت لا تستخدم قيمة الإرجاع من checkEmpty (). إما إعادته على onclick أو تنفيذه في وظيفة النسخ بدلاً من ذلك.
وأضاف المؤلف Lain, مصدر

1 إجابة

قم بالاتصال showHideShipping داخل checkEmpty بحيث يتم استدعاء showHideShipping فقط إذا تم العثور عليه غير فارغ.

Also, inline event handlers are essentially eval inside HTML markup - they're bad practice and result in poorly factored, hard-to-manage code. Seriously consider attaching your events with JavaScript, instead, eg: https://developer.mozilla.org/en/DOM/element.addEventListener

أيضا ، بما أن shipping_firstname هو input ، يجب أن تحصل على النص المدخلة عبر .value ، وليس innerHTML .

قم بإزالة المعالجات المضمنة وقم بعمل شيء كالتالي:

document.querySelector('#sameAsBilling').addEventListener('click', checkEmpty);

function checkEmpty(){
  var shippingName = document.getElementById('shipping_firstname').value;
  if(shippingName === ""){
    alert("Please fill in your Name");
    return;
  }
  showHideShipping();
}
0
وأضاف
هذا ممتاز. شكرا!
وأضاف المؤلف John Doi2021, مصدر