0

私はこの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 経由で送信されます。Submit ハンドラは実行されません。これは、[送信] ボタンにフォーカスがない場合でも発生します。これは、非常に望ましくない動作です。

ただし、この行が存在する場合、送信ハンドラーは、フォーカスがある場合にのみ Return/Enter キーを押すと実行されます。これは私が望んでいることです。

ちなみに、type="hidden" では機能しないため、display:none はビューで追加の入力を非表示にするだけです。

これはjquery-uiのバグですか、それともどういうわけか意味がありますか?

4

0 に答える 0