いつもお世話になってます。
JavaScriptについてご質問をさせて下さい。
現在asp.netで、日付を入力するテキストボックスを作成しているのですが、
数値のみの入力とスラッシュ付きの入力との両方で入力を出来るように実装したいと思っています。
※エラーを検知したらテキストボックスの背景色を変化。
例)20190101 or 2019/1/1 = 2019年1月1日
20191101 or 2019/11/1 = 2019年11月1日
数値のみの入力は無事に実装できたのですが、スラッシュ付きの場合はどうしたら良いのか分からず困っております。
function startdatecheck() { //スラッシュ削除 var reg = new RegExp("/", "g"); var startdate = document.getElementById('<%=txtStart.ClientID%>').value.replace(reg, ""); //null or 8文字ではない or 数値以外が入力されている場合は、テキストボックスの背景色を変える if (startdate == "" || startdate.length != 8 || isNaN(startdate)) { document.getElementById('<%=txtStart.ClientID%>').style.backgroundColor = '#db7093'; } //年,月,日を取得 else { var y = parseInt(startdate.substr(0, 4)); var m = parseInt(startdate.substr(4, 2)) - 1; //月は0~11で指定するため-1。 var d = parseInt(startdate.substr(6, 2)); var dt = new Date(y, m, d); //判定する if (y == dt.getFullYear() && m == dt.getMonth() && d == dt.getDate()) { document.getElementById('<%=txtStart.ClientID%>').style.backgroundColor = '#ffffff'; } else { document.getElementById('<%=txtStart.ClientID%>').style.backgroundColor = '#db7093'; } datecheck.call(); } } <asp:TextBox ID="txtStart" runat="server" onblur="startdatecheck()" MaxLength="10" /> ``` スラッシュを削除して8文字の数値になれば、スラッシュ付きでも日付判定は出来るのですが、 問題は上の例に挙げたように、2019/1/1や2019/11/1など、**スラッシュを削除し8文字に満たない場合はエラーになってしまう**事です。 初歩的な質問で申し訳ありませんが、皆様よろしくお願いいたします。 【開発環境】 Window 10 Visual Studio2017 ASP.NET ver 4.7.3282.0
回答3件
あなたの回答
tips
プレビュー