0

我试图合并以下代码

   // main chat code

    $(function () {

        var IWannaChat = $.connection.myChatHub;

        IWannaChat.client.addMessage = function (message) {
            $('#listMessages').append('<li>' + message + '</li>');
        };

        $("#sendMessage").click(function () {
            IWannaChat.server.send($('#ideaBody').val());
        });

        $.connection.hub.start();
    });

进入下面的函数,但它似乎不再起作用(注意下面的函数显示了当前的项目状态)。

$(function () {

    $("#sendMessage").click(function () {
        $('#ideaTitle,#ideaBody').each(function () {

            var $this = $(this),
                currValue = this.value,
                trimmedValue = $.trim(currValue),
                dataValue = $this.data('default');

            if (trimmedValue.length === 0 && (trimmedValue === dataValue)) {
                var IWannaChat = $.connection.myChatHub
                IWannaChat.client.addMessage = function (message) {
                    $('#listMessages').append('<li>' + message + '</li>');
                };
                IWannaChat.server.send($('#ideaBody').val());
                $.connection.hub.start();
            } else if (trimmedValue.length === 0) {
                alert('empty');
                return false;
            } else if (trimmedValue === dataValue) {
                alert('default');
                return false;
            }
        })
    });

});

我正在尝试在提交之前验证 2 个字段 - 如果 2 个字段满足验证要求,那么我想发送消息。有什么想法我哪里出错了吗?

4

2 回答 2

1

您启动并向集线器发送消息的代码是错误的。

if (trimmedValue.length === 0 && (trimmedValue === dataValue)) {
    var IWannaChat = $.connection.myChatHub
    IWannaChat.client.addMessage = function (message) {
        $('#listMessages').append('<li>' + message + '</li>');
    };
    IWannaChat.server.send($('#ideaBody').val());
    $.connection.hub.start();
}

请注意,您甚至在开始连接之前就尝试发布到集线器。

我建议将您的代码更改为;

if (trimmedValue.length === 0 && (trimmedValue === dataValue)) {
    var IWannaChat = $.connection.myChatHub
    IWannaChat.client.addMessage = function (message) {
        $('#listMessages').append('<li>' + message + '</li>');
    };    
    $.connection.hub.start().done(function () {
        IWannaChat.server.send($('#ideaBody').val());
    });
}

这样连接就开始了,只有在连接完成后,它才会尝试调用该send方法。

于 2013-07-10T08:27:34.120 回答
0
trimmedValue.length === 0 && (trimmedValue === dataValue)

您可能想检查这两个是否都是false,而不是 true 。

或者只是将其移至 final else


此外,所有这些代码都将执行两次;每轮比赛一次each()

于 2013-07-09T21:55:43.473 回答