投稿

6月, 2025の投稿を表示しています

jQuery UI DatepickerでEnterキーを無効化する方法

イメージ
jQuery UIのDatepickerの入力欄で Enterキーが押されたときの挙動 が問題になるケースがあります。フォーム内で使用している場合、Enterキーによって意図せずフォームが送信されてしまうことがあるからです。 問題の背景 jQuery UIのDatepickerは、インラインカレンダーまたはテキスト入力で日付を選択できる便利なUIコンポーネントです。しかし、入力欄にフォーカスがあり、ユーザーがEnterキーを押すと、以下のような問題が発生することがあります。 フォームが送信されてしまう カレンダーが閉じてしまう(意図せず選択が確定する) 入力値のバリデーションが発動する これらの挙動を防ぐには、 Enterキーの動作を抑制 する必要があります。 解決方法:keydownイベントでEnterキーをキャンセルする もっともシンプルな方法は、 keydown イベントを使って、Enterキー(キーコード13)を検知し、既定の動作をキャンセルすることです。 以下は具体的なコード例です。 $('#datepicker').datepicker(); // Enterキーを無効化 $('#datepicker').on('keydown', function (e) { if (e.key === 'Enter' || e.keyCode === 13) { e.preventDefault(); return false; } }); このスクリプトは、Datepickerがアタッチされた #datepicker 要素に対して、Enterキーの押下を検出し、 e.preventDefault() と return false でその動作をブロックしています。 他の入力欄に影響しないようにするには この方法は特定のDatepicker入力欄にのみ適用されます。もし複数の入力欄があり、特定のものだけEnterキーを無効化したい場合は、 セレクタで対象を限定 してください。 $('.date-only').datepicker().on('keydown', function (e) { if (e.k...

C#におけるstringとStringの違いについて

イメージ
C#のコードで、 string と String の両方の表記を目にすることがありませんか? これはどちらも.NETの System.String 型を指しており、実体としての違いはありません。 言語仕様上の違い string はC#の**予約語(キーワード)**であり、 String は.NETの System.String クラスそのものを表しています。これは、 int と System.Int32 、 bool と System.Boolean の関係と同じです。 実行時の違いはナシ string s1 = "example"; String s2 = "example"; Console.WriteLine(s1.GetType() == s2.GetType()); // True このように、 string と String で宣言された変数はどちらも System.String 型であり、動作上の違いはありません。コンパイル後のILコードでも差は確認されていません。 使い分け 以下のような使い分けが一般的と言えるでしょう。 string :変数宣言、戻り値、引数など、日常的な型指定に使用されます。C#では基本的にこちらで書くことが多いでしょう。 string name = "Taro"; String : String.IsNullOrEmpty や String.Format など、静的メソッドを呼び出す際に使用されるケースが見られます。型名としての明示性を重視した記述です。 string greet = String.Format("Hello {0}!", name); ただ、 string.IsNullOrWhiteSpace といった表記も可能であるため、どちらを使うかはコーディング規約や個人のスタイルに依存します。個人的には、大文字のStringは String.Format の時くらいで、他はすべて小文字というのが一般的かな、と思います。 名前空間に関する補足 String を使用する場合、 System 名前空間への参照が必要ですが、通常は using System; が含まれているため、特に意識する場面...

C#の正規表現で郵便番号を抽出する

C#の正規表現で数字を判定 C#の正規表現で数字を判定する時、「¥d」というパターンが使えますが、これをそのまま使うと意図しない文字列がマッチすることがあります。 たとえば、以下のようなコードで文字列の中から郵便番号を抽出しようとするとおそらくおかしな動作になるでしょう。 var valZen = "〒100-0001 東京都千代田区千代田"; var matches = Regex.Matches(valZen, @"\d\d\d-\d\d\d\d"); foreach (Match match in matches) { // 結果:100-0001 Console.WriteLine(match.Value); } 「¥d」というパターンは確かに数字にマッチするパターンではあるのですが、これは 全角と半角を区別しません 。 Regex.IsMatchメソッド 正規表現で半角数字のみを判定する Regex.Matchesの第三引数に RegexOptions.ECMAScript を指定すれば全角は無視されます。 var matches = Regex.Matches(valZen, @"\d\d\d-\d\d\d\d", RegexOptions.ECMAScript); 正規表現で郵便番号を抽出するパターン 「¥d」をまとめて指定する書き方もあります。 // ハイフンがついた郵便番号を抽出する string patternWithHyphen = @"\d{3}-\d{4}"; // ハイフンの有無にかかわらず郵便番号っぽいものを抽出する string patternAllowNoHyphen = @"\d{3}-?\d{4}";

C#で「CS1525 '{' は無効です」を解消する

イメージ
Visual Studioのクイックウォッチで日付型の変数の値を変更しようとする時に、変数の値をそのまま変更するとエラーが出て変更できません。 CS1525 '{' は無効です コンパイラエラーCS1525(Invalid expression term)は、式の中で不正な記号やキーワードが使われたときに発生します。 入力した値が日付型として識別されておらず不正な記号として扱われてしまっています。 クイックウォッチで日付を変更する 変更したい変数の値に、new DateTime() として新たに型を指定した値を入力します。 そうすれば日付型の変数の値も途中で変更可能です。

Visual Studio 2022で参照(コードレンズ)が表示されない

イメージ
エディターの上部に小さな文字で表示される「参照数」や「テスト結果」などのコードレンズ(CodeLens)が表示されなくなることがあります。 コードレンズとは? コードレンズとは、Visual Studioのエディター内でクラスやメソッドなどに関する情報を直接表示してくれる機能です。たとえば、以下のような情報がコードの上に表示されます。 参照している場所(何箇所で使われているか) 作成者や最終変更者(ソース管理と連携時) 関連する単体テストの結果 コミット履歴(Gitなどのバージョン管理と連携) コードレンズを有効にする手順(Visual Studio 2022) ① Visual Studioを起動する プロジェクトを開くのでもいいです。 ② メニューから「ツール」→「オプション」を開く メニューバーの上部から 「ツール」 → 「オプション(Options)」 を選択します。 ③ 「テキスト エディター」→「CodeLens」を選択 ④ 「CodeLensを有効にする」にチェックを入れる 「CodeLensを有効にする(Enable CodeLens)」のチェックボックスにチェックを入れます。 ⑤ [OK] を押して設定を保存 Communityエディションでは一部機能が制限されていることがあります。 設定後、Visual Studioのコード上にコードレンズが表示されるようになります。