2015-10-23 5 views
5

पर लागू नहीं होगा मैंने Yii2 ग्रिडव्यू फ़िल्टर पंक्ति में इनपुट के लिए दिनांक दिनांक अवधि पिकर लागू किया है। यह काम करता है लेकिन मूल्य डालने के बाद सही नहीं है। आपको इनपुट को फिर से क्लिक करना होगा और एंटर दबाएं। अन्य क्षेत्र ठीक काम करते हैं। क्या कोई तरीका है कि मैं इसे अन्य इनपुट के रूप में लागू कर सकता हूं, परिवर्तन के ठीक बाद?दिनांक के साथ Yii2 ग्रिडव्यू फ़िल्टरिंग रेंजपिकर इनपुट परिवर्तन

var 
    dateInput = $("[name='RequestSearch[request_date]']"), 
    configObject = { 
     autoClose: true, 
     language:'ru', 
     separator: '/', 
     showShortcuts : true, 
     shortcuts: { 
      'next-days': [3,5,7], 
      'next': ['week','month','year'] 
     }, 
     startOfWeek: 'monday', 
    }; 

dateInput.dateRangePicker(configObject); 

संपादित करें 1

यहाँ RequestSearch.php है:

यहाँ स्क्रिप्ट मैं प्रयोग किया जाता है। dateRangePicker "2015-01-05/2015-05-09" जैसे मानों को सम्मिलित करता है इसलिए मुझे एक हैंडलर बनाना था जो मान को start_date और $ end_date में विभाजित करता था।

public function rules() 
    { 
     return [ 
      [['id', 'KP_id', 'minimal_payment', 'mover_company_id', 'manager_id', 'workers_number', 'workhours', 'payment_additional', 'payment_car', 'payment_sum'], 'integer'], 
      [['request_date', 'payment_type', 'request', 'request_time', 'quantity', 'request_type', 'address', 'status', 'customer_id', 'comment',], 'safe'], 
     ]; 
    } 

$query->andFilterWhere([ 
     'id' => $this->id, 
     ... 

    ]); 

    if (! is_null($this->request_date) && strpos($this->request_date, '/') !== false) { 
     list($start_date, $end_date) = explode('/', $this->request_date); 
     $query->andFilterWhere(['between', 'request_date', $start_date, $end_date]); 
     $this->request_date = null; 
    } else { 
     $query->andFilterWhere(['request_date' => $this->request_date,]); 
    } 
+1

मुझे नियम दिखाएं() RequestSearch कक्षा के समारोह 'हो सकता है request_date' बड़े पैमाने पर यह –

+0

में निर्दिष्ट नहीं की गई मुझे लगता है कि अपेक्षित व्यवहार है। यदि आपका फ़िल्टर एक टेक्स्टबॉक्स है, तो फॉर्म तब तक सबमिट नहीं किया जाएगा जब तक कि आप इसे वास्तव में एंटर मारकर सबमिट नहीं करते। यह कस्टम इनपुट क्यों अलग होना चाहिए? अपने 'दिनांक अवधि अवधि' इनपुट के 'form.submit() 'to' चेंज 'ईवेंट के साथ एक हैंडलर को जोड़ने का प्रयास करें। – Beowulfenator

+0

@ बायोल्फेंनेटर लेकिन अन्य टेक्स्ट फ़ील्ड फ़िल्टर उनके इनपुट को बदलने के बाद लागू होते हैं। हमारे क्लिक कर्सर को दर्ज करना बंद करें। । – Marat

उत्तर

2

मैं() वैल का उपयोग कर इनपुट मूल्य या ऐसा ही कुछ है कि 'बदलें' घटना है कि उचित gridview छानने के लिए आवश्यक है ट्रिगर नहीं करता डाला करते थे datepicker प्लगइन की तरह लग रहा। इनपुट के लिए जोड़ा गया .trigger ('परिवर्तन') और अब यह सब ठीक काम करता है। मैं यहाँ का उपयोग प्लगइन के साथ स्क्रिप्ट है कि काम कर रहा है:

var dateInput = $("[name='RequestSearch[request_date]']"); 
dateInput.dateRangePicker(); 
dateInput.bind('datepicker-closed', function(){ 
    dateInput.trigger('change'); 
}) 
संबंधित मुद्दे