2015-08-26 55 views
0

IM就像兩個天鬥反對這一點,我希望some1可以使用PHP是generats 4個複選框禁用當一個複選框被選中

<form method="post" class="car_booking_form" > 
<div class="booking-item-price-calc"> 
<div class="row row-wrap"> 
    <div class="col-md-<?php echo esc_attr($col) ?> singe_cars" data-car-id="<?php the_ID()?>"> 
     <?php $list = get_post_meta(get_the_ID(),'cars_equipment_list',true); ?> 
     <?php 
     if(!empty($list)){ 
      foreach($list as $k=>$v){ 
       $v['cars_equipment_list_price'] = apply_filters('st_apply_tax_amount',$v['cars_equipment_list_price']); 

       $price_unit = isset($v['price_unit'])? $v['price_unit']: ''; 

       $price_unit_html=''; 
       switch($price_unit) 
       { 
        case "per_hour": 
         $price_unit_html=__('/hour',ST_TEXTDOMAIN); 
         break; 
        case "per_day": 
         $price_unit_html=__('',ST_TEXTDOMAIN); 
         break; 
        default: 
         $price_unit_html=__('',ST_TEXTDOMAIN); 
         break; 
       } 
       echo '<div class="checkbox"> 
         <label> 
          <input class="i-check equipment" data-price-unit="'.$price_unit.'" data-title="'.$v['title'].'" data-price="'.$v['cars_equipment_list_price'].'" type="checkbox" />'.$v['title'].' 
          <span class="pull-right">'.TravelHelper::format_money($v['cars_equipment_list_price']).''.$price_unit_html.'</span> 
         </label> 
        </div>'; 
      } 
     } 
     ?> 

幫助

IM,如果我哈得4個普通標籤的所有checkboxs我可以給主題標識和使用JS腳本,現在Checkboxs就會自動生成的,我不知道怎麼去管理它,所以當一個複選框被選中的其他3被禁用

感謝和抱歉,我不好EN

+4

這不是複選框的工作方式。如果你只想要一個主動選擇,你需要單選按鈕。 – Dave

+0

戴夫甚至使用無線電我仍然有一個問題,即時通訊在PHP中使用Foreach這是一個循環,所以一旦我得到4收音機我可以選擇主題所有bcoz爲每一行我有個人電臺 –

+0

有很多代碼下面的答案,但我相信(未經測試),如果你只是添加一個名稱到你的輸入字段(例如,' Dave

回答

0

使用收音機或複選框沒有問題。如果你想製作一組無線電,那麼你需要添加他們相同的名稱。

既然您可以更改您的腳本生成的HTML,那麼您可以添加一個名稱到您的收音機/複選框。

如果你想與複選框以使它,然後更改生成HTML這個腳本的一部分:

echo '<div class="checkbox"> 
        <label> 
         <input class="i-check equipment equipment-disabling-checkbox" data-price-unit="'.$price_unit.'" data-title="'.$v['title'].'" data-price="'.$v['cars_equipment_list_price'].'" type="checkbox" />'.$v['title'].' 
         <span class="pull-right">'.TravelHelper::format_money($v['cars_equipment_list_price']).''.$price_unit_html.'</span> 
        </label> 
       </div>'; 

這裏我們添加一個類設備 - 禁用 - 複選框知道/哪個複選框禁用。

然後,假設你想要一個獨立的複選框,禁用所有這些,加上它從你的foreach循環。

// Disable all other checkboxes 
echo '<div class="checkbox"> 
        <label> 
         <input class="i-check equipment" type="checkbox" id="disable-equipment-checkboxes" /> Disable all 
        </label> 
       </div>'; 

這裏我們定義了一個 「禁用所有」 複選框。

,並添加到您的JQuery的處理程序:

$(document).on("change", "#disable-equipment-checkboxes", function() { 
    if ($(this).prop('checked')) { 
     $(".equipment-disabling-checkbox").prop('disabled', true); 
    } else { 
     $(".equipment-disabling-checkbox").prop('disabled', false); 
    } 
}); 

在這裏,我們處理「禁用所有」複選框,並啓用/禁用其他複選框的更改事件。

如果你想要另一種解決方案,請更好地解釋你自己。

P.D.:我爲你一個小提琴:https://jsfiddle.net/s6fe9/559/

編輯:蓋好奧馬爾的需求:

更改HTML回聲這樣:

echo '<div class="checkbox"> 
       <label> 
        <input class="i-check equipment equipment-unique-checkbox" data-price-unit="'.$price_unit.'" data-title="'.$v['title'].'" data-price="'.$v['cars_equipment_list_price'].'" type="checkbox" />'.$v['title'].' 
        <span class="pull-right">'.TravelHelper::format_money($v['cars_equipment_list_price']).''.$price_unit_html.'</span> 
       </label> 
      </div>'; 

這將添加一個類名稱到所有獨特的複選框。

然後,這段代碼添加到您的JQuery的處理程序:

$(document).on("change", ".equipment-unique-checkbox", function() { 
    if ($(this).prop('checked')) { 
     $(".equipment-unique-checkbox").prop('checked', false); 
     $(this).prop('checked', true); 
    } else { 
     $(".equipment-unique-checkbox").prop('checked', false); 
     $(this).prop('checked', false); 
    } 
}); 

在這裏,我們取消所有的人,並檢查選擇之一。

請注意,在if條件的兩個部分中都需要重複的行來取消選中所有這些行才能正常工作。

在這裏,你有另一個小提琴:) https://jsfiddle.net/s6fe9/561/

Pd積:我意識到,對於HTML編輯的代碼以某種方式打破。所以我更新了它。

+0

嗨,阿西爾第一我想非常感謝你所有你的努力 這是網絡,所以你可以很好地理解問題http://easytobook.ma/st_car/tangier-to-chefchaouen/找到4個複選框我是試圖想象如何讓消費者選擇只選擇其中一個收音機/複選框,所以他不能生成價格的錯誤,即時通訊使用wordpress和4複選框得到生成,因爲你看到的循環獲取列表和回聲它 –

+0

所以你只想標記其中的一個,不是嗎?我的意思是。如果你標記1,其他標記就不能標記。好的。我接到你了。我會編輯我的答案。 –

+0

是的,先生那正是我想要的 –

0

試試這個,如果它的工作原理:

$('input[type="checkbox"]').is('checked',function(e){ 
    e.preventDefault(); 
    $("input[type='checkbox']").attr("disabled", true); 
    $(this).removeAttr('disabled'); 
}); 
+0

Aldrin沒有工作:/ –

+0

我已更新我的答案。你可以再試一次嗎? – aldrin27

0

你有到foreach循環都進不去?如果你這樣做,你可以使用單選按鈕嘗試沿着這些路線的東西:記住

echo '<div class="checkbox"> 
    <label> 
    <input type="radio" value="' . $price_unit . '" name="price" />' . $v['title'] . ' 
    <span class="pull-right"></span> 
    </label> 
</div>'; 

保持一致,上面是你的只是一個精簡版,所以你可能需要在您的所有數據添加變量。

+0

ThePav使用無線電不工作,當使用foreach循環php認爲每個收音機作爲一個單獨的收音機,而不是一組收音機,所以它顯示4收音機,但你可以選擇所有的主題,而不是隻有一個 –

+0

@OmarAguado,如果你給單選按鈕同名'name =「price」',只要它們在同一個'

'中,它們就會工作在你期望它們工作的方式上。 – PavKR

相關問題