在jQuery中同时处理文本框和单选按钮事件

时间:2019-06-18 10:51:06

标签: jquery textbox radio-button

我有一个棘手的问题,我的网页上有一个文本框,当我在其中输入内容并从中出来时,我应用了模糊事件,该事件得到执行。然后使用Ajax发送Textbox的值,然后刷新内容。

下面是代码。

 $("input[type=text]").blur(function (e) {

            var valList = [];

            if ($(this).val() != oldVal) {
                var path = $(this).attr("data-path");
                $(".loading").show();
                $.ajax({
                    type: "POST",
                    url: "@Url.Action("LoadSubControls", "Home")",
                    data: { Name: path, Products: valList },
                    success: function (response) {
                        $("#divEnquiry").empty().html(response);
                        $(".loading").hide();
                    }
                });
            }
        });

现在我的问题是,我在文本框后立即有另一个控件单选按钮,因此当我在文本框中输入内容并直接单击单选按钮时,仅模糊文本框的事件工作,我要触发模糊和单选按钮事件也是在同一时间。

以下是单选按钮代码。

$("input[type=radio]").change(function (e) {
            var path = $(this).attr("data-path");
            $(".loading").show();
            $.ajax({
                type: "POST",
                url: "@Url.Action("LoadSubControls", "Home")",
                data: { Name: path, Products: valList },
                success: function (response) {
                    $("#divEnquiry").empty().html(response);
                    $(".loading").hide();
                }
            });
        });

请帮助。

2 个答案:

答案 0 :(得分:0)

在您的blur方法内部,只需像下面这样强制单击radio

$("input[type=radio]").trigger('click');

您正在考虑用户在广播中而不是在任何地方单击,但是要防止以后单击,应在触发点击事件之前检查radio是否为checked

答案 1 :(得分:0)

它应该可以按您希望的方式工作。我能想到它为什么不起作用的唯一原因是,如果您的单选按钮已预先检查,因此更改事件从未触发。

最小示例:

<textarea id="text"></textarea>
<input type="radio" id="radio">

$('#text').on('blur', function(){
  console.log('blur');
});

$('#radio').on('change', function(){
  console.log('change');
});

JSFiddle