Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery在验证后拒绝发布_Javascript_Jquery_Node.js - Fatal编程技术网

Javascript jQuery在验证后拒绝发布

Javascript jQuery在验证后拒绝发布,javascript,jquery,node.js,Javascript,Jquery,Node.js,我在jQuery代码中添加了一些验证,以便在它发布消息之前检查空白文本字段,但它似乎不起作用。没有任何消息被张贴到我的墙上。你知道我该怎么解决这个问题吗 HTML <div id="header"> <div class="container"> <span id="text_header">Virtual Idea Wall</span> </div> </div> <div id="main"> &l

我在jQuery代码中添加了一些验证,以便在它发布消息之前检查空白文本字段,但它似乎不起作用。没有任何消息被张贴到我的墙上。你知道我该怎么解决这个问题吗

HTML

<div id="header">
  <div class="container"> <span id="text_header">Virtual Idea Wall</span> </div>
</div>
<div id="main">
  <div class="container">
    <div id="chat"></div>
  </div>
</div>
<div id="footer">
  <div class="container">
      <p>
        <label for="title">Please give your idea a title</label>
        <br />
        <input type="text" id="title" name="title"/>
      </p>
      <p>
        <label for="message">Please provide details of your idea</label>
        <br>
        <input type="text" id="message" name="message"/>
      </p>
      <p>
        <input type="submit" id="sendmessage">
      </p>
      </input>
  </div>
</div>

虚拟创意墙

请给你的想法一个标题

请详细说明你的想法

jQuery

jQuery(function ($) {
    var socket = io.connect();
    var $messageForm = $('#sendmessage');
    var $messageTitle = $('#title');
    var $messageBox = $('#message');
    var $chat = $('#chat');

    $messageForm.click(function () {
        if ($.trim($("#title").val()).length === 0) {
            alert('You must provide valid input');
            $messageTitle.val('');
            $messageBox.val('');
            return false;
        }
        if ($.trim($("#message").val()).length === 0) {
            alert('You must provide valid input');
            $messageTitle.val('');
            $messageBox.val('');
            return false;
        } else {
            e.preventDefault();
            socket.emit('send message', '<b>' + $messageTitle.val() + '</b>' + '&nbsp;-&nbsp;' + $messageBox.val());
            $messageTitle.val('');
            $messageBox.val('');
        }

        socket.on('new message', function (data) {
            $chat.prepend(data + "<br/>");
        });
    });
});
jQuery(函数($){
var socket=io.connect();
var$messageForm=$(“#sendmessage”);
var$messageTitle=$(“#title”);
var$messageBox=$(“#message”);
var$chat=$(“#chat”);
$messageForm。单击(函数(){
if($.trim($(“#title”).val()).length==0){
警报(“您必须提供有效的输入”);
$messageTitle.val(“”);
$messageBox.val(“”);
返回false;
}
if($.trim($(“#message”).val()).length==0){
警报(“您必须提供有效的输入”);
$messageTitle.val(“”);
$messageBox.val(“”);
返回false;
}否则{
e、 预防默认值();
emit('send message','+$messageTitle.val()++'+'-'+$messageBox.val());
$messageTitle.val(“”);
$messageBox.val(“”);
}
socket.on('new message',函数(数据){
$chat.prepend(数据+“
”); }); }); });
您的click函数没有传入事件“e”,因此当您调用“e.preventDefault()”时,它将停止工作

我制作了这个JSFIDLE-不支持套接字-但它确实会提醒我的消息。

这是唯一的变化(e传递到函数中)


您的click函数没有传入事件“e”,因此当您调用“e.preventDefault()”时,事件“e”将停止此操作

我制作了这个JSFIDLE-不支持套接字-但它确实会提醒我的消息。

这是唯一的变化(e传递到函数中)


这不会有什么区别。如果未引用事件对象,则不需要未使用的参数。不过,调用了“e.preventDefault();”。。。。这就是我指出这一点的原因。因为在我的示例中我没有使用套接字,所以我可能没有看到真正的问题。哈,这是另一回事。代码将立即停止,因为
e
未定义-指出这一点是更好的答案(请编辑答案)。由于事件在所有排列中都停止,因此它实际上应该是第一行+1.更新了答案,并更清楚地说明了为什么需要传入变量。这不会有任何区别。如果未引用事件对象,则不需要未使用的参数。不过,调用了“e.preventDefault();”。。。。这就是我指出这一点的原因。因为在我的示例中我没有使用套接字,所以我可能没有看到真正的问题。哈,这是另一回事。代码将立即停止,因为
e
未定义-指出这一点是更好的答案(请编辑答案)。由于事件在所有排列中都停止,因此它实际上应该是第一行+1.更新了答案,并更清楚地说明了为什么需要传入变量。
$messageForm.click(function (e) {
    ... code goes here!
}