我有这个 jquery-ui 表单:
<html>
<head>
<script src="/socket.io/socket.io.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"></script>
<script>
var socket = io.connect('http://localhost:8080');
$(function() {
$("#chat-form").dialog({
autoOpen: false,
height: 300,
width: 550,
modal: false,
buttons: {
Submit: function() {
socket.emit('send_fics_cmd', chat.val());
chat.val('');
}
}
});
</script>
</head>
<body>
<div id="chat-form" title="FICS Console">
<div id="chat-window" class="text ui-widget-content ui-corner-all"></div>
<form>
<fieldset>
<input type="text" name="chat" id="chat" value="" class="text ui-widget-content ui-corner-all" />
<input type="text" style="display:none" />
</fieldset>
</form>
</div>
</body>
</html>
node.js/socket.io 服务器在 localhost:8080 上侦听套接字对象上的发射。
我不明白的是:没有相当荒谬的线
<input type="text" style="display:none" />
在 id="chat" 的输入文本框正下方,每当我按下 Return/Enter 键时,都会通过 GET 提交表单。不执行提交处理程序。即使提交按钮没有焦点,也会发生这种情况,这完全是非常不受欢迎的行为。
但是,当此行存在时,提交处理程序仅在具有焦点时才在按 Return/Enter 键时执行,这正是我想要的。
顺便说一句,它不适用于 type="hidden",因此 display:none 只会使附加输入在视图中消失。
这是 jquery-ui 中的错误还是以某种方式有意义?