2013-04-08 102 views
0

我想将数据添加到表中的选定单元格。我用JavaScript编写了这段代码。阻止在jQuery中提交表单

var rowIndex = 10; 
var colIndex = 5; 
var dateTable = document.getElementById('timeTable'); 
dateTable.rows[rowIndex].cells[colIndex].innerHTML = "Su"; 

我想用同样的概念jQuery中为:

$('input[name=add_button]').click(function(e) { 
    var dateTable = document.getElementById('timeTable'); 
    var rowIndex = $('[name=days]').val(); 
    var colIndex = $('[name=times]').val(); 
    var text = $('input[name = text]').val(); 
    dateTable.rows[rowIndex].cells[colIndex].innerHTML = text; 
    e.preventDefault(); 
}); 

我的问题是:preventDefault()方法应该阻止我的形式提交。这并不妨碍表单提交。如果我删除dateTable.rows[rowIndex].cells[colIndex].innerHTML = text;行,表单不会被提交。我认为这条线有一些问题。请帮我分类。如果jQuery中有更好的选项可用,请告诉我。我将能够使用colIndexrowIndex来查找单元格的位置。

感谢

+0

你可以张贴HTML吗? 'colIndex'和'rowIndex'可能没有被设置为你所期望的,实际上是未定义的。你有没有在控制台中看到任何错误? – SachinGutte 2013-04-08 05:01:24

+0

你是否在firebug控制台中得到任何javascript错误... – 2013-04-08 05:05:19

+0

@phobos:不,我没有在控制台中的任何错误 – NewUser 2013-04-08 05:05:35

回答

1

试试这个:

form tag

<form onsubmit="return false;" ......> 

</form> 

还要检查你的索引,这些都是从0 or 1开始添加return false;,如果这些都是从1开始,那么你必须decrease it by 1使用前

dateTable.rows[rowIndex-1].cells[colIndex-1].innerHTML = text;

其实当你点击button它会preventdefault behavior,而不是其他元素行为(form in your case)

所以,我认为这是不可能阻止你的form在这里。

替代码你可以使用:

$('form#myForm').on('submit',function(e){ 
    e.preventDefault(); 
    var dateTable = document.getElementById('timeTable'); 
    var rowIndex = $('[name=days]').val(); 
    var colIndex = $('[name=times]').val(); 
    var text = $('input[name = text]').val(); 
    dateTable.rows[rowIndex].cells[colIndex].innerHTML = text; 
    return false; 
}); 
+0

我有这个语句的任何jQuery替代? – NewUser 2013-04-08 05:19:38

+0

再次检查我的答案,我做了一些改变。另请参阅http://stackoverflow.com/questions/5081674/jquery-prevent-default-browser-form-submit-behaviour-but-submit-form-with-jquer – 2013-04-08 05:27:36

+0

+1我喜欢你的第二个解决方案。它干净甜美。 – NewUser 2013-04-08 05:35:14