1

私は一日中フォーラムとチュートリアルを見てきましたが、これを理解できないようです. 私はasp.netとWebデザイン(htmlなど)に100%慣れていません。私は数ヶ月前から winforms と vb.net を使用しています。

ページにテキストボックス (ID=DOBTextbox) があり、テキストボックスのテキストの長さが 6 文字以上 (またはさらに良いのは、日付として評価できる) の場合にテキストが変更される JavaScript コードを実装しようとしています。特定の日付形式(できればMMM dd、yyyyですが、それに近い組み込みのjavascript日付コンバーター関数を使用したいと思います)。クライアント主導型にしたいので、javascriptを使いたいです。

これらの行に沿って多くの例をたどると、ソース ファイルに関数を作成する必要があることがわかり、コード ビハインド ファイルに属性を追加できます。

<script type="text/javascript">
function reformatDate(inputDate) {
    var outputDate = inputDate.toString();
    return outputDate;
}
</script>

そして私のコードビハインドで:

DOBTextBox.Attributes.Add("onblur", "reformatDate('" & DOBTextBox.Text & "')")

ただし、テキストボックスを離れても何も起こりません。

注: 試行錯誤を繰り返したので、「onblur」を使用しました。私の最初の好みは、ユーザーがテキスト ボックスのテキストを変更したときに発生するイベントです。また、todatestring() が認識されないというエラーが表示されたため、関数で ".tostring()" を使用しました (todatestring() の出力は、希望する形式に近いと思います)。

助けてくれてありがとう!!!

4

1 に答える 1

1

おそらくこれが必要です:

DOBTextBox.Attributes.Add("onblur", "reformatDate(this.value);")

あなたのコードでは、ASP.NET コードと JavaScript を組み合わせようとしています。ASP.NET はブラウザに送信されると静的ですが、javascript は動的です。コードを使用すると、ASP.NET コードが属性に実行されるときに、テキスト ボックスの値がハードコーディングされます。したがって、HTML はおそらく次のようにレンダリングされます。

<input type="text" id="whatever" name="whatever" value="10/24/2001" onblur="reformatDate('10/24/2001')" />

私の変更により、テキストボックスがぼやけているときにJavaScriptがテキストボックスの値を取得してreformatDate関数に渡すようになります。したがって、次のようにレンダリングされます。

<input type="text" id="whatever" name="whatever" value="10/24/2001" onblur="reformatDate(this.value)" />

テキストボックスがぼやけている場合だけでなく、テキストボックスの値が変更されたときにのみ関数が起動するようにonchange、 ではなくを使用することもできます。onblur

アップデート:

ASP.NET コードを次のように変更する必要があります。

DOBTextBox.Attributes.Add("onblur", "this.value = reformatDate(this.value);")

テキストボックスの値が変換された値に再設定されるようにします。

更新 2:

関数を次のように変更してみてください。

function reformatDate(inputDate) {
    if (inputDate.length > 5) {                  // Least amount of characters for possible date
        var outputDate = new Date(inputDate);    // Convert input to date object
        if (!isNaN(outputDate.getTime())) {      // Makes sure the date is valid
            return outputDate.toDateString();    // Return formatted date only if valid
        }
    }
    return inputDate;    // Return original value if invalid date
}
于 2012-10-15T03:44:55.567 に答える