ユーザーがフォーカスがオフのときに送信するドロップダウンボックスに入ったにもかかわらず、[クリア]ボタンをクリックすると、値を保存する代わりにフォームがクリアされるフォームを作成しようとしています。
JQuery:
$("#clearbtn").click(function () {
alert("clear clicked");
$(this).data("clicked", true);
});
if ($("#clearbtn").data("clicked") == true) {
this.form.submit();
}
else {
$("#MainContent_ddlCountry").blur(function () {
$("#MainContent_txtCountrySelected").val($(this).val());
this.form.submit();
});
}
意見:
<% var qryCountry = from c in dbPCCommon.Country
orderby c.CountryDescription ascending
select new { c.CountryId, c.CountryDescription };
ddlCountry.DataSource = qryCountry;
ddlCountry.DataTextField = "CountryDescription";
ddlCountry.DataValueField = "CountryId";
ddlCountry.SelectedValue = Model.CountryId.ToString();
ddlCountry.DataBind();
%>
<tr>
<td class="labels">Country:</td>
<td>
<asp:DropDownList ID="ddlCountry" runat="server" />
<%=Html.HiddenFor(a => Model.CountryId, new {@Value = ddlCountry.SelectedValue}) %>
</td>
</tr>
<asp:TextBox ID="txtCountrySelected" name = "txtCountrySelected" runat="server" />
ただし、このjQueryを実行するたびに、デフォルトでelseステートメントが使用されます。それとも、私はこれを完全に間違った方法で行っていますか?
明確にするために編集:2つのシナリオを試してみましょう。
シナリオ1:ユーザーが住所のフォームに情報を入力すると、カーソルのフォーカスが「国」の最後のドロップダウンボックスに移動します。ここでの考え方は、ユーザーが[国]ボックスからタブで移動すると(またはフォーカスを失うと)、フォームを送信して保存するというものです。それはうまくいきます。
シナリオ2:ここで、ユーザーが情報を入力し、カーソルフォーカスが「国」の最後のドロップダウンに移動し、画面の「クリア」送信ボタンをクリックしてフォーム全体をクリアすることにした場合。エントリを送信するのではなく、フォーム全体をクリアしてほしい。
ドロップダウンボックスにフォーカスがある場所で.blurを使用すると、ユーザーがボタンをクリックしてもフォーカスが失われず、ボタンをクリックしてもフォーカスが移動しなかったため、フォームがクリアされるはずだと思いました。しかし、私は間違っています。