1

html5の方が簡単なことはわかっていますが、html4またはxhtmlを使用する必要があり、どういうわけかhtml5なしでは情報を見つけることができません。誰かが私に日付を入力する方法を教えてくれますか?

<input type="text" name ="sometext">

通常のhtml4またはxhtmlは、入力のタイプとして日付タイプを持っていないようです。

前もって感謝します。

4

3 に答える 3

2

この質問は、他のいくつかの StackOverflow スレッドで尋ねられ、回答されていますが、同じ問題に直面しているため、ここに詳細があります。

jQuery DatePicker を使用することは良い出発点ですが、実際のカレンダー ポップアップ以外ではフォーマットや最小値と最大値の整合性を強制しません。つまり、悪いものを入力または貼り付けることができます。

関数を使用して JS で「古い方法」を実行する方法をデモするサイトへの 2 つのリンクを次に示し ます 。 /form/javascript-date-validation.php

そして、これを行うための別の非常に優れた方法へのStackOverflowリンクがあります: JavaScriptで「無効な日付」のDateインスタンスを検出する

個人的には、最小および最大の日付範囲の検証と制限が必要です (SQL は 1773 年 1 月 1 日より前の日付を嫌い、誰かが私のアプリでそれを試しました)。日付文字列が有効かどうかを通知する関数を接続し、それを入力の onchange イベントに接続します。

私のHTMLは次のとおりです。

私は ASP.NET と jQuery の DatePicker も使用しているので、重要な要素は onblur イベントです。

FixValidDate() 関数の JS は次のとおりです。

var availableDateFormats = ["mmddyyyy","mm/dd/yyyy","mm-dd-yyyy","yyyy/mm/dd","yyyy-mm-dd"];
function FixValidDate(txtDate,nulls, minDate, maxDate) {
    //debugger;
    formats = 
    {
        'mmddyyyy':{
            're':/^(\d{1,2})(\d{1,2})(\d{4})$/,
            'month': 1,'day': 2, year: 3
        },
        'mm/dd/yyyy':{
            're':/^(\d{1,2})[/](\d{1,2})[/](\d{4})$/,
            'month': 1,'day': 2, year: 3
        },
        'mm-dd-yyyy':{
            're':/^(\d{1,2})[-](\d{1,2})[-](\d{4})$/,
            'month': 1,'day': 2, year: 3
        },
        'yyyy/mm/dd':{
            're':/^(\d{4})[/](\d{1,2})[/](\d{1,2})$/,
            'month': 2,'day': 3, year: 1
        },
        'yyyy-mm-dd':{
            're':/^(\d{4})[-](\d{1,2})[-](\d{1,2})$/,
            'month': 2,'day': 3, year: 1
        }
    }

    dateText = txtDate.value;
    matched = false;
    for(i=0; i<availableDateFormats.length; i++)
    {
        f = formats[availableDateFormats[i]];
        match = dateText.match(f.re);
        if(match)
        {
            matched = true;
            month = match[f.month];
            day = match[f.day];
            year = match[f.year];
            //TODO validate if the numbers make sense
            txtDate.value = month+"/"+day+"/"+year;
        }
    }
    if (!matched && nulls) {
        txtDate.value = "";
        return false;
    } else {
        var timestamp = Date.parse(txtDate.value);

        if (isNaN(timestamp) == false) {
            var d = new Date(timestamp);

            if (minDate != null) {
                if (d < minDate) {
                    txtDate.value = "";
                    return false;    
                }

            }

            if (maxDate != null) {
                if (d > maxDate) {
                    txtDate.value = "";
                    return false;
                }
            }

        } else {
            txtDate.value = "";
            return false;
        }
    }
    return true;
}

これは、私が約 10 年間 JS 用に使用してきた古いライブラリからのものです。別の JS 検証関数を簡単に見つけて、私のものと入れ替えることができます。

私の機能では、さまざまな日付形式を受け入れる必要があり、それが不適切な形式である場合は、フィールドを空白にして、ユーザーを同じボックスに入れておきます。あなたはそれを変えることができます。

于 2014-03-26T20:25:15.140 に答える
1

HTML4 にはデフォルトで日付を入力するためのタグがありません。JQUERY などのサードパーティ ライブラリを含めるだけで済みます。

この例をチェックしてください http://jqueryui.com/datepicker/

于 2012-11-29T05:54:26.093 に答える
-1

基本的なinput要素は、HTML (HTML5 以外) が持つすべてです。すべてのテキスト入力に対して、マークアップが関連付けられたラベルが必要です。通常、予想される入力形式に関する情報も含める必要があります。これは、言語や文化によって異なるためです。

<label for="birth">Date of birth (day/month year):</label>
<input id="birth" type="text" name="birth" size="10">

また、JavaScript を使用してクライアント側のユーザー入力を事前にチェックし、データ エラーが発生した場合にユーザーに迅速に応答できるようにする必要があります。当然、チェックはサーバー側で複製する必要があります。

于 2012-11-29T08:36:23.317 に答える