C# で ASP.NET 4.5 を使用しています。
いくつかの asp テキストボックスを含む aspx ページがあります。フォームの送信時に入力が必須のものもあれば、必須ではないものもあります。
クライアント側の OnBlur イベントで、テキスト ボックスが必須かどうかを確認したいですか?
必須のテキストボックスについては、必須のフィールドバリデーターがフォームに既にあります。また、テキスト ボックスを検証するために、onblur="ValidatorOnChange(event);" を使用しています。
各コントロールの onblur イベント、つまり beolow と呼ばれる JQuery 関数を作成しました。
$(document).ready(function () {
disableResetButton();
disableSaveButton();
$("input").blur(function (event) {
var id = event.target.id;
var value = $("#" + id).val();
if (document.getElementById(id).className.match(/(?:^|\s)txtRequireBorder-Color(?!\S)/) && value != '') {
document.getElementById(id).className = document.getElementById(id).className.replace(/(?:^|\s)txtRequireBorder-Color(?!\S)/g, ' txtBorder-Color');
}
var $validator = $("[ControlToValidate=" + this.id + "]");
alert($validator.length);
//else if (document.getElementById(id).className.match(/(?:^|\s)txtRequireBorder-Color(?!\S)/)) {
// document.getElementById(id).className = document.getElementById(id).className.replace(/(?:^|\s)txtBorder-Color(?!\S)/g, ' txtRequireBorder-Color');
});
setBorder();
});
フォーム上のテキスト ボックスの例は次のとおりです。
<tr style="vertical-align: top;">
<td align="left" class="formlabel2" valign="top" width="17%" id="tdFirstName">
<asp:Label ID="lblFName" runat="server" Text="First Name"></asp:Label>
</td>
<td align="left" valign="top" colspan="2" width="40%">
<asp:TextBox ID="txtFname" runat="server" CssClass="txtBoxWidthMiddle txtSingleline txtBack-Color txtRequireBorder-Color"
MaxLength="50" TabIndex="2" onblur="ValidatorOnChange(event);"></asp:TextBox>
<br />
<asp:RequiredFieldValidator ID="rfvFname" runat="server" ControlToValidate="txtFname"
ErrorMessage="First Name is required" ValidationGroup="a" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="revFname" runat="server" ControlToValidate="txtFname"
ErrorMessage="Please enter proper first name" ValidationGroup="a" Display="Dynamic"
ValidationExpression="^[\w. ,'#&$~@!"-]*$"></asp:RegularExpressionValidator>
</td>
</tr>
<tr style="vertical-align: top;">
<td align="left" class="formlabel2" valign="top" width="20%">
<asp:Label ID="lblMName" runat="server" Text="Middle Name"></asp:Label>
</td>
<td align="left" valign="top" colspan="2">
<asp:TextBox ID="txtMname" runat="server" CssClass="txtSingleline txtBoxWidthMiddle txtBorder-Color txtBack-Color"
TabIndex="3" onKeyDown="return (event.keyCode != 13)" MaxLength="50"></asp:TextBox>
<br />
<asp:RegularExpressionValidator ID="revMname" runat="server" ControlToValidate="txtMname"
ErrorMessage="Please enter proper middle name" ValidationGroup="a" Display="Dynamic"
ValidationExpression="^[\w. ,'#&$~@!"-]*$"></asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td align="left" class="formlabel2" valign="top">
<asp:Label ID="lblLName" runat="server" Text="Last Name"></asp:Label>
</td>
<td align="left" valign="top" colspan="2" width="38%">
<asp:TextBox ID="txtLname" runat="server" CssClass="txtBoxWidthMiddle txtSingleline txtBack-Color txtRequireBorder-Color"
TabIndex="4" MaxLength="50" onblur="ValidatorOnChange(event);"></asp:TextBox>
<br />
<asp:RequiredFieldValidator ID="rfvLName" runat="server" ControlToValidate="txtLname"
ErrorMessage="Last Name is required" ValidationGroup="a" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="revLname" runat="server" ControlToValidate="txtLname"
ErrorMessage="Please enter proper last name" ValidationGroup="a" Display="Dynamic"
ValidationExpression="^[\w. ,'#&$~@!"-]*$"></asp:RegularExpressionValidator>
</td>
</tr>
さて、ぼかしイベントが必須のテキスト ボックスから呼び出されたのか、非必須のテキスト ボックスから呼び出されたのかを判断するにはどうすればよいですか?
ありがとう。