Ho applicato un dataPeriodPicker a un input nella riga del filtro di griglia di Yii2. Funziona ma non si applica subito dopo aver inserito il valore. Devi fare nuovamente clic sull'input e premere Invio. Altri campi funzionano bene. C'è un modo in cui posso applicarlo come altri input, subito dopo il cambiamento?Yii2 filtraggio griglia con dataRangePicker non si applica al cambio di input
Ecco lo script che ho usato:
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);
EDIT 1
Ecco il RequestSearch.php. dateRangePicker inserisce valori come "2015-01-05/2015-05-09" quindi ho dovuto creare un gestore che divide il valore in $ start_date e $ 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,]);
}
Mostrami regole() funzione del RequestSearch classe può essere 'request_date' non è massicciamente assegnato in esso –
Penso che questo sia il comportamento previsto. Se il tuo filtro è una casella di testo, il modulo non verrà inviato finché non lo invierai effettivamente premendo Invio. Perché questo input personalizzato dovrebbe essere diverso? Prova ad associare un gestore con 'form.submit()' all'evento 'onChange' del tuo input' datePeriodPicker'. – Beowulfenator
@Beowulfenator ma altri filtri di campi di testo vengono applicati subito dopo aver modificato il loro input. Colpendo inserisci il nostro cursore di selezione. . – Marat