5

我正在创建一个动态表单。我有一个下拉列表,当用户进行选择时,会查询数据库以查看该项目是否需要隐私。如果没有,则将其他字段添加到表单中。还会触发邮政编码查找 ajax 功能,但仅应在项目不是私有的情况下触发。

这一切都很好,直到用户改变主意......

这是我从下拉列表中选择项目时运行的代码的相关部分;

success:function(response){
    if(response === '1'){
        // do stuff for item that requires privacy
        // do NOT trigger zip_check function
    }else if(response === '0'){
        // do stuff for item that is public +
        $('#zip-code').keyup(zip_check); // triggers a function to check zip code
    }
}

这会按预期工作,直到用户选择了一个非私有项目然后改变主意并选择了一个私有项目,在这种情况下 zip_check 函数仍然会运行,即使它现在不应该被触发。我哪里错了?

4

2 回答 2

6

尝试这个:

用于绑定:

$('#zip-code').on('keyup',zip_check);

和解除绑定:

$('#zip-code').off('keyup',zip_check);
于 2013-10-07T11:10:17.377 回答
4

我认为您正在寻找off(在 中添加此内容(response===1){} ):

$('#zip-code').off('keyup', zip_check);

这样您就可以从点击事件中删除该功能。如果您想删除所有事件,只需使用

$('#zip-code').off('keyup');

如果您想关闭所有事件:

$('#zip-code').off();

.off()是首选的方法.unbind(),并且.on()对于.bind()

于 2013-10-07T11:07:16.567 回答