0

我正在尝试创建一个表单,尽管用户已经输入了在焦点关闭时提交的下拉框:如果他们单击“清除”按钮,它将改为清除表单而不是保存值。

查询:

  $("#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 语句。或者,我是不是完全走错了路?

编辑澄清:让我尝试两种情况。

场景 1:用户在表单中填写地址信息,他们的光标焦点移动到“国家/地区”的最后一个下拉框。这里的想法是,一旦用户关闭 Country 框(或失去焦点),它将提交表单并因此保存。这很好用。

场景2:现在,如果用户填写信息并且他们的光标焦点移动到“国家”的最后一个下拉菜单,他们决定通过单击屏幕上的“清除”提交按钮来清除整个表单。我希望这清除整个表单而不是提交条目。

我认为通过使用焦点在下拉框上的 .blur ,当用户单击按钮时它不会失去焦点并且应该清除表单,因为单击按钮时焦点没有移动。然而,我错了。

4

1 回答 1

2

这是一个使用短计时器延迟来解决点击事件的工作解决方案:它可能不是理想的解决方案,但它确实有效。

$("#clearbtn").click(function () {
    $(this).data("clicked", true);
});

function submitForm(e) {
    if ($("#clearbtn").data("clicked") !== true) {
        $("#MainContent_txtCountrySelected").val($("#MainContent_ddlCountry").val());
        alert("we are submitting!");
        document.forms[0].submit();
    }
    else {
        alert("we are NOT submitting!");
    }
}

$("#MainContent_ddlCountry").blur(function () {
   setTimeout(submitForm,100);
});
于 2013-03-21T23:01:00.967 回答