如何在进入下拉框后点击按钮是否已被点击,该下拉框也将提交表单jquery mvc

时间:2013-03-21 21:36:11

标签: jquery asp.net-mvc

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

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语句。或者,我是否完全以错误的方式解决这个问题?

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

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

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

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

1 个答案:

答案 0 :(得分: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);
});