2015-11-07 96 views
2

我已经尝试使用各种方法来设置使用codeigniter进行多选下拉列表的表单验证,但无法正确设置规则。在这里是我使用的代码,好心帮助。附:我已经尝试过在stackoverflow上建议的代码,但徒劳无功。在codeigniter中的多选下拉列表的表单验证

<select class="" name="travel_cat[]" multiple="multiple" id="travel_lst" data-placeholder="Select Travel Categories" style="width: 100%;"> 
        <option value="adventure">Adventure</option> 

         <option value="arts&culture">Arts & Culture</option> 

         <option value="events">Events</option> 

         <option value="backpacking">Backpacking</option> 

         <option value="beach_holidays">Beach Holidays</option> 

        <option value="budget_travel">Budget Travel</option> 

        <option value="city_travels">City Travels</option> 

        <option value="day_trips">Day Trips</option> 

        <option value="honeymoons">Honeymoons</option> 

        <option value="family_trips">Family Trips</option> 

        <option value="weekend_gateway">Weekend Gateway</option> 

        <option value="history&architecture">History & Architecture</option> 

        <option value="luxury">Luxury</option> 

        <option value="nature">Nature</option> 

        <option value="road_trips">Road Trips</option> 

        <option value="wildlife">Wildlife</option> 

        <option value="religious">Religious</option> 
       </select> 

$choice = $this->input->post("travel_cat"); 
    if(is_null($choice)) 
    { 
     $choice = array(); 
    } 
    $travel_cat = implode(',', $choice); 

表单验证: -

$this->form_validation->set_rules('travel_cat', 'Travel Category', 'callback_check_default'); 

function check_default($array) 
{ 
    foreach($array as $element) 
    { 
     if($element == '0') 
     { 
      return FALSE; 
     } 
    } 
    return TRUE;   
} 
+0

多选框中没有值'0'。它会一直返回你'真的' – Saty

+0

那么我应该把什么,而不是0? –

+0

您需要检查'if($ element ==“”) { return FALSE; }' – Saty

回答

2

我更换了以下提到的代码回调函数,它工作得很好。

function check_default() 
{ 
    $choice = $this->input->post("travel_cat"); 
    if(is_null($choice)) 
    { 
     $choice = array(); 
    } 
    $travel_cat = implode(',', $choice); 

    if($travel_cat != '') 
     return true; 
    else 
     return false; 
}