0

ユーザーが時間の値(たとえば、あるタスクの実行に費やした時間)を入力できるフォームがあります。ビジネス要件は、時刻をhh:mm形式または10進数形式のいずれかで入力することです。いずれの場合も、合計を表示したり、他の入力に対して検証したりするなど、「ヘルプ」を表示するためのクライアント側のJavaScriptがかなり存在する可能性があります。

したがって、たとえば、あるユーザーが8時間30分に「8:30」と入力し、別のユーザーが同じことを意味する「8.5」と入力する場合があります。フォーム/検証の重複を最小限に抑えることができるものを探しています。

モデルとビューを使用してこれを実行するための最良の方法は何ですか?

4

2 に答える 2

2

両方の形式を許可する正規表現はそれほど複雑ではありません。javascriptを介してクライアント側でその単純な検証を実行します。それ以外に、このために(ビジネスオブジェクトレベルで)ビジネス検証を追加することもできます。

于 2011-10-11T16:46:09.507 に答える
0

jQueryを使用して、入力ボックスの時刻を正しい形式で変更するスライダーを作成しました。ビューファイルのCreate.aspxで、次のjquery関数を本文の先頭のどこかに配置します。

<script>
$(function () {
    $("#slider").slider({
        value: 9,
        min: 0,
        max: 1440,
        step: 15,
        slide: function (event, ui) {
            var hours = Math.floor(ui.value / 60);
            var minutes = ui.value - (hours * 60);
            var ampm = "AM";

            if (hours == 12) { ampm = "PM"; } 
            else if (hours == 0) { hours = 12; ampm = "AM"; }
            else if (hours > 12) { hours = hours - 12; ampm = "PM"; }

            if (hours < 10) hours = '0' + hours;
            if (minutes < 10) minutes = '0' + minutes;
            $("#work_StartTime").val(hours + ':' + minutes + ' ' + ampm);
        }
    });
});

</script>

次に、同じページの本文で、時間入力用のテキストボックスの近くにdivを配置します。そのdivにスライダーが表示されます

<div class="editor-field">
    <%: Html.EditorFor(model => model.work.StartTime)%>
        <div id="slider"></div>
            <%: Html.ValidationMessageFor(model => model.work.StartTime)%>
        </div>

これにより、スライダーが表示されます。上記のjavascriptコードで、step:15を変更し、増分を15分にします。これは明らかにクライアント側の検証です。もちろん、サーバー側の検証も実装する必要があります。

于 2012-03-04T11:18:38.237 に答える