私は3つのコントロールを使用してユーザーが日付を指定できるWebページを持っています:月と日の2つのドロップダウンコントロール(Jan = 1、おそらく悪い選択:-))と月の日数(1-31)。テキストボックスはその年に使用されます。 The Yearのテキストボックスでは、AJAX Toolkit Watermarkエクステンダーを使用して[ここ] [1]文字通りの単語「年」をテキストボックスの明るい灰色で書いています。このテキストは、ユーザーがフォーカスをテキストボックスに設定すると消えます。ユーザーがテキストボックスに何かを入力すると、テキストは通常のテキストボックスの色で表示されます。そうでない場合は、テキストボックスのフォーカスが失われたときに明るい灰色のテキスト「年」が表示されます。ASP.NET Ajaxツールキットウォーターマークコントロールの問題とJavaScriptの日付の質問
3コントロールは「発行日」テキストボックスを構成し、同様に3つのコントロールがコントロールの「有効期限」セットを構成します。
ユーザーが発行日を変更した場合(最後のコントロールの発行年が失われた場合など)、有効期限コントロールを発行日から10年間の日付値に更新したい。
問題がこれです:txtExpireYearコントロールの値を設定するためにJavascriptを使用すると、普通のテキストで値を表示するのではなく、年の値に通常「年」と書かれている明るい灰色の文字透かしテキストを更新しますあなたが入力したかのように値を扱います。
2番目の問題は、IssueDateの年の値を取得することです。なぜdtmDateOfIssue.getYear()関数が2桁の数字を返すのですか?年が< 2000の場合はar、年が2000より大きい場合は4桁の年を返します。私はおそらくこれを回避することができますが、私は説明を探しています。
ありがとうございます。各日付グループの
function txtIssueYear_OnBlur() {
//Get sub controls of passport Expiration date
var ddlExpireMonth = document.getElementById("dtmPassportExpirationDate_ddlMonth");
var ddlExpireDate = document.getElementById("dtmPassportExpirationDate_ddlDate");
var txtExpireYear = document.getElementById("dtmPassportExpirationDate_txtYear");
//Get the individual values of each sub control of the Expiration date
var ExpireMonth = parseInt(ddlExpireMonth.value);
var ExpireDayOfMonth = parseInt(ddlExpireDate.value);
var ExpireYear = parseInt(txtExpireYear.value);
//If the Expiration Date still contains all the default values, set it to a default
//value based on the value of the Date of Issue
if (ExpireMonth == -1 && ExpireDayOfMonth == -1 && (isNaN(ExpireYear))) {
//Get sub controls of passport Issue date
var ddlIssueMonth = document.getElementById("dtmPassportDateOfIssue_ddlMonth");
var ddlIssueDate = document.getElementById("dtmPassportDateOfIssue_ddlDate");
var txtIssueYear = document.getElementById("dtmPassportDateOfIssue_txtYear");
//Get the individual values of each sub control of the Issue date
var IssueMonth = parseInt(ddlIssueMonth.value);
var IssueDayOfMonth = parseInt(ddlIssueDate.value);
var IssueYear = parseInt(txtIssueYear.value);
var dtmDateOfIssue = new Date(IssueYear, IssueMonth - 1, IssueDayOfMonth); //construct Issue date
//add 10 years - 1 day to get the default Expiration date
dtmDateOfIssue.setYear(dtmDateOfIssue.getYear() + 10);
dtmDateOfIssue.setDate(dtmDateOfIssue.getDate() - 1);
//Set the Expiration Date
txtExpireYear.value = dtmDateOfIssue.getYear();
ddlExpireMonth.value = dtmDateOfIssue.getMonth() + 1;
ddlExpireDate.value = dtmDateOfIssue.getDate();
}
3つのコントロールは、ユーザーコントロール(ASCXファイル)に含まれる:
<asp:DropDownList ID="ddlMonth" runat="server">
</asp:DropDownList>
<asp:DropDownList ID="ddlDate" runat="server">
</asp:DropDownList>
<asp:TextBox ID="txtYear" runat="server" Width="85px" ></asp:TextBox>
<asp:CustomValidator ID="CustomValidator1" runat="server"
EnableClientScript="true" Required="True"
ErrorMessage="CustomValidator" ClientValidationFunction="validateDate"
ValidateEmptyText="True"></asp:CustomValidator>
これは、以下のようにブラウザに送信されます。クライアントサイドスクリプトはページ固有のため、Javascriptを記述しているイベントハンドラはクライアントサイドIDを使用することに注意してください。それが明確か、あなたに合っているかどうかは分かりません。最終的なクライアント側の名前を使用した例が好きですが、もう一度<% - servercontrol.ClientId%>アプローチを提供したい場合は、試してみてください。
感謝!あなたの第二の問題について
<select name="dtmPassportExpirationDate$ddlMonth" id="dtmPassportExpirationDate_ddlMonth" class="DefaultDropDown">
<option value="-1">--Month--</option>
<option value="1">Jan</option>
<option value="2">Feb</option>
<option value="3">Mar</option>
<option value="4">Apr</option>
<option value="5">May</option>
<option value="6">Jun</option>
<option value="7">Jul</option>
<option value="8">Aug</option>
<option selected="selected" value="9">Sep</option>
<option value="10">Oct</option>
<option value="11">Nov</option>
<option value="12">Dec</option>
<select name="dtmPassportExpirationDate$ddlDate" id="dtmPassportExpirationDate_ddlDate" class="DefaultDropDown">
<option value="-1">--Day--</option>
<option value="1">1</option>
<option value="2">2</option>
<option selected="selected" value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
<input name="dtmPassportExpirationDate$txtYear" type="text" value="2009" maxlength="4" id="dtmPassportExpirationDate_txtYear" class="DefaultTextBox" style="width:68px;" />
<input name="dtmPassportExpirationDate$btnClear" type="button" id="dtmPassportExpirationDate_btnClear" style="font-size: x-small; height: 20px;" value="Clear" tabindex="-1" onClick="ClearDate_dtmPassportExpirationDate();" /></td>
<input type="hidden" name="dtmPassportExpirationDate$TextBoxWatermarkExtender1_ClientState" id="dtmPassportExpirationDate_TextBoxWatermarkExtender1_ClientState" />
私はJavascriptのルーキーです.JQueryを使用したことがなく、リファレンスを設定する方法もわかりません。 PLZの代わりにまっすぐなJavascriptの例を教えてもらえますか? – ChadD
私はこれを試しました: var txtExpireYearWatermarkExtender = document.getElementById( "dtmPassportExpirationDate_TextBoxWatermarkExtender1_ClientState"); \t txtExpireYearWatermarkExtender.attributes( "text")= dtmDateOfIssue.getFullYear(); ..ですが、textプロパティはエクステンダオブジェクトにありません – ChadD
jQueryはここで何もしません。$ find関数はMS Ajaxに由来し、ASP .NETコントロールのクライアント側オブジェクト表現を取得するために使用されます。 set_Text関数は、TextBoxWaterMarkExtenderコントロールのクライアント側API上の関数です。 – CMS