我正在尝试使用AJAX提交表单,该表单是jQuery UI 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>
单击“确定”(或“创建用户”)按钮时,它可以正常工作,即使用AJAX提交答案,但我也希望按Enter键时可以正常工作。
现在,当我在asd
中输入input#answer
并按回车键时,会生成如下网址:
mysite.com/?answer=asd
我尝试添加功能:
$('#answer').keypress(function(e) {
if (e.keyCode == $.ui.keyCode.ENTER) {
alert("enter pressed on answer input");
}
});
这次它会提醒"enter pressed on answer input"
,然后转换网址。然而,我不希望它修改URL,我该如何删除该功能?在哪里定义?
简而言之,我希望回车键只做我想做的事。
感谢您的帮助!
按钮 - 用于点击鼠标的按钮 - 添加在jQuery.dialog();
中,如下所示:
$( "#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");
}
});
答案 0 :(得分:3)
您可以使用event.preventDefault()
阻止事件的默认操作。我不是100%确定jQuery-ui中的表单是什么样的,如果防止keypress的默认设置有效。作为替代方案,您可以阻止submit
事件的默认操作,正如您可能预期的那样,会阻止提交表单(根据Gokul的回答)。有关event.preventDefault()
。
$('#answer').keypress(function(e) {
if (e.keyCode == $.ui.keyCode.ENTER) {
e.preventDefault();
}
});
- 或 -
$('whatevertheuiformis').on( 'submit', function(e) {
if (e.keyCode == $.ui.keyCode.ENTER) {
e.preventDefault();
}
});
答案 1 :(得分:2)
和你一样......
<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>
//jQuery Version
$('form').submit(function(){
return false;
});
// javascript
document.getElementById('my-form').onsubmit = function() {
return false;
}
$('#answer').keypress(function(e) {
if (e.keyCode == $.ui.keyCode.ENTER) {
e.preventDefault();
//alert("enter pressed on answer input");
submit_with_ajax(answer);
}
});
所以这里表格根本不会提交..所以你可以执行你的AJAX
提交或请求......
希望它有所帮助...
答案 2 :(得分:1)
<强> DEMO 强>
试试这个,
在输入答案中输入值,然后单击输入
$(document).ready(function () {
$(document).on('keypress',function(e)
{
if(e.which==13 && $("#answer").val().length>0)
{
alert("hi"); // do your ajax call here
}
});
});
希望这有帮助