如何从子方法中破坏父函数

时间:2014-06-03 07:42:51

标签: javascript

我有一个函数searchKeyboardCmd,它被绑定为文本框的事件处理程序。 其目的是检查该文本框中的数据是否唯一。如果不是,它应该破坏此处理程序的执行并显示警报窗口。如果是唯一的,它应该从其他texbox获取数据并将其存储在数组中(代码片段来自`var a = new())

self.searchKeyboardCmd = function (data, event) {
        if (event.keyCode == 13) { //checking if enter was pressed or other key
            foo(function (result) {
                if (result == 'false') {
                    alert("Numer seryjny nie jest unikalny");
                    return true;
                }
            });

            var a = new Eq();
            a.StorageId(self.StorageTemp());
            a.StartDate(self.StartDateTemp());
            a.DeviceSerialNumber(self.Test());
            a.DeviceId(self.DeviceTemp());
            a.Issue(self.Issue())
            a.IssueDesc(self.IssueDesc());
            a.Quantity(self.number());
            a.Project(self.Project());
            a.MeUser(self.MeUser());

            self.data.push(a);
            $('.datepicker').datepicker({ autoclose: true, todayHighlight: true/*, language: "pl"*/, format: 'dd/mm/yyyy' });
            deviceIdField.focus();
            self.Test("");
            return false;
        }
        return true;
    };

我的foo函数回调结束方法。如果它是唯一的,它会从中收到。错误的其他方式。

function foo(callback) {
    $.ajax({
        url: "/DeviceInstance/IsUnique",
        contentType: "application/json; charset=utf-8",
        type: "POST",
        datatype: "json",
        data: JSON.stringify({ value: viewModel.Test() }),
        error: function (data) {
            alert("Dodanie  nie powiodło się " + data);
        },
        success: function (data) {
            callback(data);
        }
    });

所以我的问题是打破我的主事件处理程序方法的执行。 我尝试修改这一行:

self.searchKeyboardCmd = function (data, event,callback) 

foo(function (result) {
                console.log(result);
                callback(result);
            });

我得到的唯一回应是:undefined is not a function

1 个答案:

答案 0 :(得分:0)

试试这个:

var f = foo(function (result) {
    if (result == 'false') {
        alert("Numer seryjny nie jest unikalny");
        return true;
    }
});

if(!f){
    return; // (Or return true or false)
}

如果f()返回false,则函数调用下面的代码将不会被执行,如果它返回true,它将是。