。在点击ENTER后刷新页面
我正在使用ajax来更新数据库并使用新文件夹,但它在命中ENTER后刷新页面。 在我的表单上我有onkeypress="if(event.keyCode==13) savefolder();"
这里是我有的javascript代码:它的功能基本上是在你点击后输入它调用函数savefolder,保存文件夹,然后通过ajax发送一个请求将文件夹添加到数据库。问题是刷新页面...我希望它保持在同一页面上。 有什么建议吗?谢谢。在点击ENTER后刷新页面
<script>
function savefolder() {
var foldername= jQuery('#foldername').val(),
foldercolor= jQuery('#foldercolor').val();
// ajax request to add the folder
jQuery.ajax({
type: 'get',
url: 'addfolder.php',
data: 'foldername=' + foldername + '&foldercolor=' + foldercolor,
beforeSend: function() { alert('beforesend');},
success: function() {alert('success');}
});
return false;
}
</script>
这是工作:
<form>
<input type="submit" value="Enter">
<input type="text" value="" placeholder="search">
</form>
function savefolder() {
var foldername= jQuery('#foldername').val(),
foldercolor= jQuery('#foldercolor').val();
jQuery.ajax({
type: 'get',
url: '/echo/html/',
//data: 'ajax=1&delete=' + koo,
beforeSend: function() {
//fe('#r'+koo).slideToggle("slow");
},
success: function() {
$('form').append('<p>Append after success.</p>');
}
});
return false;
}
jQuery(document).ready(function() {
$('form').submit(savefolder);
});
你需要检查一下,如果你有任何错误,在加工过程中(萤火虫或Chrome控制台可以帮助)。就目前而言,您的代码格式不正确,因为$(document).ready()
从未在问题中包含的代码中关闭。
谢谢Jared。不幸的是我的页面上的小提琴工作仍然刷新。页面上有另一种形式,我的输入框在里面,我想我需要把它从表单中拿出来,然后它应该管用。 – cppit 2012-02-19 03:27:51
我会放弃'onsubmit'的'onkeypress'事件方法,因为它是由'enter'按键以及'submit'输入元素点击触发的,而AFAICT则不会做任何事情。我也不使用内联事件处理程序,即不使用'onsubmit =“return saveFolder()”',而是使用'$('form')。submit(handler ...)'。没有看到实际的代码和标记直播,我不知道该说些什么,除非有一个未被捕获的错误或者不能“取消”代码执行并允许表单继续提交。 – 2012-02-19 03:30:28
gotcha。谢谢 – cppit 2012-02-19 04:15:12
由于默认情况下,输入按钮提交表单表单上,您不仅需要用自己的代码处理这个问题,但之后取消该事件。
试试这个代码,而不是:
onkeypress="if(event.keyCode==13) {savefolder(); return false;}"
的onkeypress事件事件将表明,JavaScript的返回值,只有不断与它的事件,如果它返回true。
谢谢xthexder但是这返回一个空白页 – cppit 2012-02-19 03:24:44
只需stop the propagation of the event在表单提交
jQuery(document).ready(function($) {
$("#whatever-form-you-are-pulling-your-values-from").submit(function(event) {
var foldername = $('#foldername').val();
var foldercolor = $('#foldercolor').val();
event.stopPropagation();
// ajax request to add the folder
$.ajax({
type: 'get',
url: '../addfolder.php',
data: 'ajax=1&delete=' + koo,
beforeSend: function() { fe('#r'+koo).slideToggle("slow"); },
success: function() { }
});
});
为什么你有'e'声明两次的时间(在'doc.ready()'和'作为window.event')和'回报假;'在'savefolder()'末尾应该(我想)取消表单提交,如果这是它的附加方式。你发布的内容没有严格意义(doc.ready()'块的末尾在哪里?)。 – 2012-02-19 02:57:02
另外,* ajax *不会执行往返;你的'submit'处理程序不会取消'submit'事件的是事实。我还没有看到像你一样的方法(也许它是IE特有的?),我没有看到你声明'submit'处理程序的位置。 – 2012-02-19 02:59:33
@JaredFarrish他在窗体标签上定义了一个“inline onkeypress”事件... – xandercoded 2012-02-19 03:01:27