ユーザーがボタンとポップアップから日付を選択することでのみ、Kendo UIのDatepickerの値を変更できるようにしたいと思います。ユーザーがDatepickerテキストボックスに入力できないようにするにはどうすればよいですか?コントロール全体を無効にせずにテキストボックスを無効にできますか?
入力要素にこの属性と値を追加します...
onkeydown="return false;"
これにより、入力された入力が無効になり、カレンダーコントロール入力の使用が許可されます。
以下のようにコントロールを使用します-
@(Html.Kendo().DatePicker()
.Name("FromDate")
.HtmlAttributes(onkeydown="javascript:return false;" })
)
キーボード入力を無効にします。他の条件も同様に処理できます。
あなたは2つの方法でそれを行うことができます
//disable kendo ui datapicker click event
$(".k-datepicker input").bind('click dblclick',function () {
return false;
});
//make it readonly
$(".k-datepicker input").prop("readonly", true);
入力要素を見つけて無効にします
$('#datepicker').attr('disabled','disabled');
(剣道のデモWebサイトで試してみました http://demos.kendoui.com/web/datepicker/index.html )
ユーザーが日付ピッカーで日付を入力できないようにし、ポップアップから日付のみを選択したい場合は、このコードを試してください
$(".k-datepicker").find('span').find('input').attr("readonly", "readonly");
もちろん、日付と時刻の選択ウィジェットには、キーボードではなくUIのみで入力を強制するオプションが必要です。フレームワークがこの明白なユースケースに何も提供していないことに私は非常に驚いています。
同じニーズがあり、次のロジックを使用して動作するようになりました。
$("#date").kendoDatePicker({
format: "dd MMMM yyyy"
});
$("#date").attr("readonly","readonly");
この方法では、ユーザーはキーボードで値を入力できず、ドロップダウン日付選択ウィンドウを使用して適切にフォーマットされた日付のみを入力できます。
ジャスティンの答えは機能しますが、マウスの右クリックで誤った値が貼り付けられるのを防ぎません。 oncontextmenu
を使用して、マウスの右クリックを防ぐことができます
oncontextmenu="return false;"
これにより、カレンダーの番号がコピーされるのを防ぐこともできます。
実際、ウィジェットは入力の入力中にユーザーを制限しません。この動作の理由は、ここで説明されています: なぜウィジェットが入力を制限しないのか
このスレッドで共有されている他のすべてのソリューションとともに、カスタムMasked DatePickerを作成して、ユーザーを特定の日付形式に制限することができます。詳細については、このハウツーデモをご覧ください。
**これは組み込み機能としてKendo UIでサポートされていないため、ご自身の責任で使用する必要があります。良いニュースは、既知の副作用なしでかなりうまく機能することです。