0

在我的$(document).ready()函数中,我有一个.change绑定到集合或单选按钮的事件。但是,如果用户提交的表单有错误,页面将使用用户选择的值重新加载。这导致.change每次页面加载时都会触发单选按钮功能,我不希望它这样做。我将如何禁用它?

编辑

这是完整的功能,之前没有发布,因为它现在中间很乱,并且试图记住这篇文章的可读性。

仅供参考 - 如果用户提交表单后出现错误,那么我需要页面加载表单,就像用户点击提交按钮时一样。由于我们根据单选按钮选择显示了一组div和元素,所以我使用了该方法。有什么方法可以检测页面加载期间是否发生了操作? spantrigger('change')

    $('input[name=TransactionType]').change(function (e) {
        //Clear any messages from previous transaction
        $('.error').text('');
        $('.success').text('');

        //Display fieldset Submit and Cancel(back to search) link
        $('#PageDirection').show();
        $('#AgentInformation').show();

        //Display input fields
        var radioValue = $(this);

        if (radioValue.attr('id') == "Enroll" || (radioValue.attr('id') == "ModT")) {
            //Enable and disable input boxes
            $('span').not('#AllInput').hide();
            $('#AllInput').show();
            $('#PayFrequency').show();
            $('#refNumberInput').show();

            //Set tooltips
            $('#AccountType').removeAttr("title");
            if (radioValue.attr('id') == "Enroll") {
                $('#PaymentFrequency').removeAttr("title");
                $('.req').show();
                $('#refNumberInput').show();
                $('#enrollNote').show();
            } else {
                $('#PaperStatement').show();
                $('#PaymentFrequency').attr("title", "Select the frequency to pay the distributor");
                $('#refNumberInput').show();
            }
        } else if (radioValue.attr('id') == "New") {
            $('span').not('#NewMessage').hide();
            $('#NewMessage').show();
            $('.req').show();
            $('#refNumberInput').show();

        } else if (radioValue.attr('id') == "ModA") {
            $('#AllInput').show();
            $('#AgentIdSpan').show();
            $('.req').show();
            $('#UnenrollMessage').hide();
            $('#NewMessage').hide();
            $('#PayFrequency').hide();
            $('#PaperStatement').hide();
            $('#refNumberInput').show();
            $('#AgentId').attr("title", "Enter the Agent ID to be modified");

        } else if (radioValue.attr('id') == "Clone") {
            $('span').not('#AgentIdSpan').hide();
            $('#AgentIdSpan').show();
            $('.req').show();
            $('#AgentId').attr("title", "Clone EFT onto this Agent ID");

        } else if (radioValue.attr('id') == "Unenroll") {
            $('span').not('#UnenrollMessage').hide();
            $('#UnenrollMessage').show();
            $('.req').show();
            $('#refNumberInput').show();

        }

        if (radioValue.attr('id') != "Clone") {
            $('.alwaysReq').show();
        };
    }).filter(':checked').trigger('change');
4

3 回答 3

0

如果你不关心自动完成,你可以autocomplete="off"form. 您还可以将当前字段值与它的defaultValue进行比较,以查看它是否由浏览器自动填充。

于 2013-09-26T15:31:53.463 回答
0

您可以在 jquery 就绪函数中使用“on”或“delegate”。像这样:

   $(document).delegate("input[name=TransactionType]","change", function(){
        $('.error').text('');
        $('.success').text('');
   });
于 2013-09-26T15:39:24.107 回答
0

document.ready通常不会调用更改函数。仅当您手动更改复选框或受其他功能影响的同一事件时才会调用它,但不会在document.ready.

请删除该.trigger('change')方法,因为它会触发更改方法document.ready

于 2013-09-26T15:44:09.013 回答