I am using kartik datePicker in my site but whenever I try to use onSelect event the doesn't triggered I don't know what is the problem. I searched a lot but didn't find any solution.
This is my code:
<?php
echo DatePicker::widget([
'name' => 'check_issue_date',
'type' => DatePicker::TYPE_INLINE,
'options' => ['placeholder' => 'Select issue date ...', 'id' => 'date-picker'],
'pluginOptions' => [
'format' => 'dd-M-yyyy',
'todayHighlight' => false,
'onSelect' => 'function(dateText, inst) {
alert("hello");
}'
]
]);
?>
Look at pluginEvents on this page http://demos.krajee.com/widget-details/datepicker#settings
<?php echo DatePicker::widget([
'id'=>'scheduleProject',
'name' => 'scheduleProject',
'type' => DatePicker::TYPE_INLINE,
'language' => 'en',
'pluginOptions' => [
'format' => 'M-dd-yyyy',
'startDate' => date(\Yii::$app->params['viewDateFormat']),
'todayHighlight' => true,
'todayBtn' => true,
],
'pluginEvents' =>[
"changeDate" => "function(e) { alert(123)}",
]
]);?>
echo DatePicker::widget([
'name' => 'check_issue_date',
'type' => DatePicker::TYPE_INLINE,
'options' => ['placeholder' => 'Select issue date ...', 'id' => 'date-picker'],
'pluginOptions' => [
'format' => 'dd-M-yyyy',
'todayHighlight' => false,
'onSelect' => 'function(dateText, inst) {
alert("hello");
}'
],
'pluginEvents' => [
'onChange' => 'function(event) {
console.log(event.date);
}'
]
]);
?>
Related
I am using yii2-widget-datetimepicker in my yii2 project. I want to retain the value of it after submitting the page.
<form action="index" method="post" >
<?=
DateTimePicker::widget([
'name' => 'datetime_10',
'options' => [
'placeholder' => 'Start Date Time',
'autocomplete' => 'off',
'required' =>true,
],
'convertFormat' => false,
'pluginOptions' => [
'format' => 'yyyy-mm-dd hh:i:ss',
//'startDate' => '01-Mar-2014 12:00 AM',
'todayHighlight' => true,
'autoclose' => true,
]
]);
?>
<?=
DateTimePicker::widget([
'name' => 'datetime_11',
'options' => [
'placeholder' => 'End Date Time',
'autocomplete' => 'off',
'required' =>true,
],
'convertFormat' => false,
'pluginOptions' => [
'format' => 'yyyy-mm-dd hh:i:ss',
//'startDate' => '01-Mar-2014 12:00 AM',
'todayHighlight' => true,
'autoclose' => true,
]
]);
?>
</form>
How to retain the selected date-time value? Any help would be highly appreciated.
Without further tweaks, you could do
<form action="index" method="post">
<?=
DateTimePicker::widget([
'name' => 'datetime_10',
'value' => Yii::$app->request->post('datetime_10', null),
'options' => [
'placeholder' => 'Start Date Time',
'autocomplete' => 'off',
'required' => true,
],
'convertFormat' => false,
'pluginOptions' => [
'format' => 'yyyy-mm-dd hh:i:ss',
//'startDate' => '01-Mar-2014 12:00 AM',
'todayHighlight' => true,
'autoclose' => true,
]
]);
?>
<?=
DateTimePicker::widget([
'name' => 'datetime_11',
'value' => Yii::$app->request->post('datetime_11', null),
'options' => [
'placeholder' => 'End Date Time',
'autocomplete' => 'off',
'required' => true,
],
'convertFormat' => false,
'pluginOptions' => [
'format' => 'yyyy-mm-dd hh:i:ss',
//'startDate' => '01-Mar-2014 12:00 AM',
'todayHighlight' => true,
'autoclose' => true,
]
]);
?>
</form>
But this is not reliable. If you are gathering data throughout multiple pages, you should really consider storage/persistence, at least session & save to database after all the forms are completed, or skip session and go directly with in-memory data, a database etc.
You should assigne a value realted to your nodel->field and assigne/reassigne the value you need after (or before ) subimit
<?=
DateTimePicker::widget([
'name' => 'datetime_10',
'value' => $yourModel->yourField, // <------ this
'options' => [
'placeholder' => 'Start Date Time',
'autocomplete' => 'off',
'required' =>true,
],
'convertFormat' => false,
'pluginOptions' => [
'format' => 'yyyy-mm-dd hh:i:ss',
//'startDate' => '01-Mar-2014 12:00 AM',
'todayHighlight' => true,
'autoclose' => true,
]
]);
?>
I have a problem with editable kartik, how can I make editable kartik stored in the database? sometimes BAD REQUEST notifications appear
My Controller
public function actions()
{
return ArrayHelper::merge ( parent::actions () , [
'editable' => [
'class' => EditableColumn::className() ,
'modelClass' => AssetMasterRequest::className() ,
'forceCreate'=> false,
]
]);
}
My View
<?php
$gridColumns = [
'assetMaster.asset_name',
'request_date',
[
'class' => 'kartik\grid\EditableColumn',
'attribute' => 'requested_by',
'pageSummary' => 'Total',
'vAlign' => 'middle',
'width' => '210px',
'editableOptions' => function ($model, $key, $index) use ($ambildata) {
return [
'header' => 'Request By',
'formOptions' => ['action'=>'pru'] ,
'size' => 'md',
'afterInput' => function ($form, $widget) use ($model, $index) {
return $form->field($model, "request_notes");
}
];
}
],
[
'class' => 'kartik\grid\EditableColumn',
'attribute' => 'request_notes',
'vAlign' => 'middle',
'width' => '210px',
'editableOptions' =>[
'formOptions'=>[
'action'=>'editable'
],
]
],
'requested_by',
];?>
Please help. Have spent two days on this. Thanks!
You must return a JSON encoded response in the array format specified above with output and message values. This is important for the AJAX request to be processed and completed successfully.
Here is a grid view configuration with editable column
echo GridView::widget([
'id' => 'kv-grid-demo',
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => $gridColumns, // check the configuration for grid columns by clicking button above
'containerOptions' => ['style' => 'overflow: auto'], // only set when $responsive = false
'headerRowOptions' => ['class' => 'kartik-sheet-style'],
'filterRowOptions' => ['class' => 'kartik-sheet-style'],
'pjax' => true, // pjax is set to always true for this demo
// set your toolbar
'toolbar' => [
[
'content' =>
Html::button('<i class="fas fa-plus"></i>', [
'class' => 'btn btn-success',
'title' => Yii::t('kvgrid', 'Add Book'),
'onclick' => 'alert("This will launch the book creation form.\n\nDisabled for this demo!");'
]) . ' '.
Html::a('<i class="fas fa-redo"></i>', ['grid-demo'], [
'class' => 'btn btn-outline-secondary',
'title'=>Yii::t('kvgrid', 'Reset Grid'),
'data-pjax' => 0,
]),
'options' => ['class' => 'btn-group mr-2']
],
'{export}',
'{toggleData}',
],
'toggleDataContainer' => ['class' => 'btn-group mr-2'],
// set export properties
'export' => [
'fontAwesome' => true
],
// parameters from the demo form
'bordered' => $bordered,
'striped' => $striped,
'condensed' => $condensed,
'responsive' => $responsive,
'hover' => $hover,
'showPageSummary' => $pageSummary,
'panel' => [
'type' => GridView::TYPE_PRIMARY,
'heading' => $heading,
],
'persistResize' => false,
'toggleDataOptions' => ['minCount' => 10],
'exportConfig' => $exportConfig,
'itemLabelSingle' => 'book',
'itemLabelPlural' => 'books'
]);
I'm trying single-file uploads using Kartik's FileInput.
Things go fine when doing this through standard create form as the following returns non-null:
$filedata = UploadedFile::getInstance($model, 'filedata');
However it always returns null when going into Kartik's DetailView in edit mode and trying to update the file.
In view.php I have:
[
'attribute' => 'filedata',
'visible' => Yii::$app->user->can('doIt'),
'type' => DetailView::INPUT_FILEINPUT,
'rowOptions' => ['class' => 'kv-view-hidden'],
'widgetOptions' => ['options' => ['accept' => 'application/pdf'],
'pluginOptions' => [
'showUpload' => false,
'allowedFileExtensions' => ['pdf'],
'initialCaption' => $model->filename,
],
'pluginEvents' => [
'filecleared' => <whatever>,
'fileloaded' => <whatever>,
],
],
],
while in _form.php (which does work):
<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>
<?= $form->field($model, 'filedata')->widget(FileInput::classname(), [
'options' => ['accept' => 'application/pdf'],
'pluginOptions' => [
'showUpload' => false,
'allowedFileExtensions' => ['pdf'],
'initialCaption' => $model->getOldAttribute('filename'),
],
'pluginEvents' => [
'filecleared' => <whatever>,
'fileloaded' => <whatever>,
],
])
?>
Any ideas? (BTW, don't know whether 'multipart/form-data' is needed somehow in view.php as it is in _form.php, so anyone confirming this and giving some details should be welcome).
Of course, multipart/form-data is needed both in _form.php and view.php as well, as follows:
'formOptions' => ['options' => ['enctype' => 'multipart/form-data']],
'attributes' => [
...
[
'attribute' => 'filedata',
'visible' => Yii::$app->user->can('doIt'),
'type' => DetailView::INPUT_FILEINPUT,
'rowOptions' => ['class' => 'kv-view-hidden'],
'widgetOptions' => ['options' => ['accept' => 'application/pdf'],
'pluginOptions' => [
'showUpload' => false,
'allowedFileExtensions' => ['pdf'],
'initialCaption' => $model->filename,
],
'pluginEvents' => [
'filecleared' => <whatever>,
'fileloaded' => <whatever>,
],
],
],
....
]
How to add id in select2 dropdownlist kartik. The goal I want when I choose value "success" in dropdown, so value in the other dropdownlist example2 and example3 disabled is false. Before it, for dropdownlist example2 and example3 with value "yes" is false.
I've created code JavaScript but it is not working. What can I try next?
This my code :
<?php
echo $form->field($model, 'example')->widget(Select2::classname(), [
'model' => $model,
'hideSearch' => true,
'data' => ['success' => 'Success', 'fail' => "Fail"],
'language' => 'id',
'options' => [
'placeholder' => 'Pilih',
'options' => [
['id' => 'example'],
]
],
'pluginOptions' => [
'allowClear' => true,
'width' => '350px',
],
])->label('Example');
?>
<?php
echo $form->field($model, 'example2')->widget(Select2::classname(), [
'model' => $model,
'hideSearch' => true,
'data' => ['yes' => "Yes", 'no' => "No"],
'language' => 'id',
'options' => [
'placeholder' => 'Pilih',
'options' => [
'yes' => ['disabled' => true],
['id' => 'example2'],
]
],
'pluginOptions' => [
'allowClear' => true,
'width' => '350px',
],
])->label('Example 2');
?>
<?php
echo $form->field($model, 'example3')->widget(Select2::classname(), [
'model' => $model,
'hideSearch' => true,
'data' => ['yes' => "Yes", 'no' => "No"],
'language' => 'id',
'options' => [
'placeholder' => 'Pilih',
'options' => [
'yes' => ['disabled' => true],
['id' => 'example3'],
]
],
'pluginOptions' => [
'allowClear' => true,
'width' => '350px',
],
])->label('Example 3');
?>
This JavaScript code :
<?php
$this->registerJs('
$("input[type=dropdown]").change(function() {
var isi = this.value;
if(isi == "success") {
$("#example2").attr("disabled",false);
$("#example3").attr("disabled",false);
}
});
')
?>
May be this is what you want.
Add option to first select element (#example):
'pluginEvents' => [
"change" => "function() {
var value = $(this).val();
if(value == 'success')
{
$('#demo-example2').val('yes');
$('#demo-example2').trigger('change');
$('#demo-example3').val('yes');
$('#demo-example3').trigger('change');
}
}",
]
I have tried with below code and it is not working for me.
echo $form->field($model, 'value')->widget(DateTimePicker::classname(), [
'pluginOptions' => [
'autoclose' => true,
'format' => 'yyyy-mm-dd HH:ii:ss',
'minuteStep' => 1,
'todayHighlight' => true,
'startDate' => date("y-m-d H:i:s"),
'changeYear' => true,
'changeMonth' => true,
]
])->label('Select date & time');
It works for me as below:
$form->field($model, 'value')->widget(DateTimePicker::classname(), [
'options' => ['placeholder' => 'Enter Value'],
'pluginOptions' => [
'autoclose' => true,
'format' => 'Y-m-d H:i:s',
'startDate' => date('Y-m-d H:i:s')
]
]);
Add 'minDate' => 0 to disable previous date selection from today.
Updated Code
echo $form->field($model, 'value')->widget(DateTimePicker::classname(), [
'pluginOptions' => [
'autoclose' => true,
'format' => 'yyyy-mm-dd HH:ii:ss',
'minuteStep' => 1,
'minDate' => 0,
'todayHighlight' => true,
'startDate' => date("y-m-d H:i:s"),
'changeYear' => true,
'changeMonth' => true,
]
])->label('Select date & time');
echo $form->field($model, 'value')->widget(DateTimePicker::classname(), [
'pluginOptions' => [
'minuteStep' => 1,
'minDate' => 0,
'startDate' => date("y-m-d H:i:s"),
]
])
You can use the following i assume you are using kartik\widgets\DateTimePicker
$form->field($model, 'campaign_schedule', [
'inputOptions' =>
[
'value' => date('Y-m-d H:i:s'),
],
])->widget(kartik\widgets\DateTimePicker::class, [
'options' => ['placeholder' => 'Select operating time ...'],
'convertFormat' => false,
'pluginOptions' => [
'format' => 'yyyy-mm-dd hh:ii:ss',
'todayHighlight' => true,
'startDate' => new JsExpression("new Date('" . date('m/d/y') . "')"),
'autoclose' => true,
],
])