如果div为空,则停止在javascript中运行函数

时间:2018-04-25 08:01:53

标签: javascript html

在尝试复制代码之前,我正在尝试检查div是否为空,因为我发现用户希望选择“与结算相同”复选框并复制空的运输表单。

目前,根据下面的代码我试图说明他们的运输名称是否为空停止,抛出一个警告框然后停止该功能。

我发现警报被抛出,但复制运输表单的功能仍然运行。

正在检查的运输名称

<div class="chkField">
        <label for="shipping_firstname">[CustomerInfo_firstname]</label>
        <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--> 
        <img src="assets/templates/common/images/error2.gif" width="12" height="12" alt="" /> 
        <!--END: req_shipping_firstname-->
        <div class="clear"></div>
      </div>

结算复选框,用于将送货字段复制到结算字段

  <div class="sameAsBilling1">
            <input type="checkbox" name="sameAsBilling" id="sameAsBilling"  onclick="checkEmpty();showHideShipping();"/>
            <label for="sameAsBilling">Same as Delivery Address</label>
            <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;


    }
}

1 个答案:

答案 0 :(得分:1)

showHideShipping内拨打checkEmpty,只有在发现showHideShipping不为空时才会调用eval

此外,内联事件处理程序在HTML标记中基本上是shipping_firstname - 它们是不好的做法,导致代码很少,难以管理的代码。请认真考虑使用JavaScript附加您的活动,例如:https://developer.mozilla.org/en/DOM/element.addEventListener

另外,由于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(); }

删除内联处理程序,并执行以下操作:

plt.figure(1)
ax1 = plt.subplot(221)
df1_summ.plot.bar(x='A', y='counts', ax=ax1, figsize=(5, 4), title='Exponential Plot')

ax2 = plt.subplot(222)
df2_summ.plot.bar(x='B', y='counts', ax=ax2, figsize=(5, 4), title='Poisson Plot')