2017-05-02 225 views
0

私のフォームには、TextModeプロパティが 'Date'に設定されたTextBoxコントロールがあります(完全性のために)私の地域の通常の日付フォーマットは 'dd/MM/yyyy '(UK):ASP.NET 4.5 Textbox Textmode 'Date'ポストバックの問題

ユーザーが、私はそれゆえAutoPostBackの背後にあるコードで何かをしたい日付を変更し、プロパティ設定をOnTextChanged
<asp:TextBox ID="tbFrom" runat="server" TextMode="Date" AutoPostBack="True" OnTextChanged="DatesChanged"></asp:TextBox> 

これは、ユーザーがカレンダーポップアップコントロールを使用して日付を選択したときに正しく動作しますが、ユーザーが手動で日付を入力すると、必要に応じて日付が完全に入力される前にコントロールがポストバックします。

たとえば、ユーザは曜日に「01」を入力し、月には「01」を入力し、その年には「2017」を入力します。年の部分でユーザーが '2'を入力すると、TextChangedイベントが発生し、コントロールは(完全に有効な)日付'01/01/0002 'でポストバックし、コントロールはフォーカスを失います。

これは技術的にはうまくいきますが、非常に特殊な方法(年、月、月など)でさまざまなセクションに入力しない限り、ユーザーが必要な日付を完了できないという効果があります。例えば)。

私の直接の質問は 'です。このコントロールのマニュアルの日付入力を無効にすることはできますか? '。しかし、私は手動入力を保持する方法についての提案も歓迎するが、ユーザーが完全な日付を最初に入力できるようにポストバックを処理する。

多くのありがとうございます。おかげWebruster -

答えて

1

はい、これは素晴らしい仕事

 <asp:TextBox ID="tbFrom" runat="server" onkeypress="return false;" 
    onpaste="return false" TextMode="Date" AutoPostBack="True" 
OnTextChanged="DatesChanged"></asp:TextBox> 
+0

を次のようにテキストボックスのマークアップに追加

onkeypress="return false;" onpaste="return false"

を使用することにより、行うことができます!私はまだ上向きの矢印で少し問題がありましたが、ここで与えられた答えを使用して削除しました。http://stackoverflow.com/questions/31157892/how-to-remove-up-down-arrow-keys -from-asptextbox-texmodedate –

+0

@JohnP私たちが実装したのは、Textmode = Dateを使用する代わりに、Jqueryのdatepickerを使用したので、このコントロールでこの問題を軽減した方法でユーザーを選択し、見てみましょうあなたがそれを使用することができれば、それはもっと多くの機能を持っています、試してみてください! – Webruster

+0

ええ、いい考えです。私はそれに渦巻きの感謝を与えるでしょう。 –

関連する問題