Javascript jQuery UI对话框在Enter键上更改URL

Javascript jQuery UI对话框在Enter键上更改URL,javascript,jquery,ajax,forms,jquery-ui,Javascript,Jquery,Ajax,Forms,Jquery Ui,我试图用AJAX提交一个表单,表单是jQueryUI对话框的内容 我使用与中相同的代码 但是我修改了表单,因此只有一个文本输入,因此表单如下所示: <form> <fieldset> <label for="answer"><strong>Your Answer : </strong></label> <input type="text" name="answer" id="answer" clas

我试图用AJAX提交一个表单,表单是jQueryUI对话框的内容

我使用与中相同的代码

但是我修改了表单,因此只有一个文本输入,因此表单如下所示:

<form>
  <fieldset>
    <label for="answer"><strong>Your Answer : </strong></label>
    <input type="text" name="answer" id="answer" class="text ui-widget-content ui-corner-all" />    
  </fieldset>
  </form>
mysite.com/?answer=asd
$( "#dialog-form" ).dialog({
      autoOpen: false,
      height: 300,
      width: 350,
      modal: true,
      buttons: {
        Answer: function() {
            var answer = $("#dialog-form #answer").val();
            alert("your answer : "+answer);
                    submit_with_ajax(answer);
        },
        Cancel: function() {
          $( this ).dialog( "close" );
        }


      },
      close: function() {
        allFields.val( "" ).removeClass( "ui-state-error" );
        alert("asd");
      }
    });
我尝试添加函数:

  $('#answer').keypress(function(e) {
    if (e.keyCode == $.ui.keyCode.ENTER) {
          alert("enter pressed on answer input");
    }
});
这一次,它会提醒
“在应答输入时按enter键”
,然后转换URL。然而,我不希望它修改URL,我如何删除该函数?它的定义是什么

简而言之,我希望enter键只执行我希望它执行的操作

谢谢你的帮助

编辑: 在
jQuery.dialog()中添加了鼠标点击的按钮如下所示:

<form>
  <fieldset>
    <label for="answer"><strong>Your Answer : </strong></label>
    <input type="text" name="answer" id="answer" class="text ui-widget-content ui-corner-all" />    
  </fieldset>
  </form>
mysite.com/?answer=asd
$( "#dialog-form" ).dialog({
      autoOpen: false,
      height: 300,
      width: 350,
      modal: true,
      buttons: {
        Answer: function() {
            var answer = $("#dialog-form #answer").val();
            alert("your answer : "+answer);
                    submit_with_ajax(answer);
        },
        Cancel: function() {
          $( this ).dialog( "close" );
        }


      },
      close: function() {
        allFields.val( "" ).removeClass( "ui-state-error" );
        alert("asd");
      }
    });
就像你的

<form>
<!-- <form onsubmit="return false"> is an optional -->
<fieldset>
    <label for="answer">
        <strong>Your Answer : </strong>
    </label>
    <input type="text" name="answer" id="answer" 
           class="text ui-widget-content ui-corner-all" />
</fieldset>
</form>
所以这里的表格根本不会提交。。这样您就可以执行
AJAX
提交或请求

希望它能帮助…

试试这个

在“输入答案”中输入值,然后单击“输入”

$(document).ready(function () {
     $(document).on('keypress',function(e)
               {
                if(e.which==13 && $("#answer").val().length>0)
                {
                    alert("hi"); // do your ajax call here
                }
          });
});

希望这有帮助

您可以使用
event.preventDefault()
阻止事件的默认操作。我不能100%确定表单在jQueryUI中是什么样子,以及是否可以防止默认的按键。作为替代方案,您可以防止
submit
事件的默认操作,正如您可能预期的那样,该操作会阻止表单提交(根据Gokul的回答)。有关
event.preventDefault()
的更多信息,请参阅

--或--


听起来像个虫子。也许你可以阻止默认(
e.preventDefault()
)并假装点击所述按钮(
$('thingy')。点击()
)。你使用的是提交按钮吗??还是没有它?@Sumurai8谢谢!不需要假装点击,我可以在回车键上调用一个函数。我现在将查看如何使用preventDefault。或者您可以将其作为答案发布:)@Gokul我正在jQuery代码中添加按钮。我现在将在我的问题中添加代码。e.preventDefault()是正确的,以防止提交表单。或者您可以使用
完全不提交。它肯定会提交。然而,出于某种原因,我不喜欢使用html属性,我想用JavaScript处理所有事情,对于可重用代码,我想:)如果sumurai8不发布他的答案,我会接受你的答案。应该是这样,但在我的情况下,表单在jQuery UI的模式对话框中,而不是在普通html中。无论如何谢谢你!