需要帮助将变量传递给$(#something).submit(function(e){

时间:2012-01-13 15:27:08

标签: jquery forms

我是jQuery的新手,并且遇到了一些代码问题:

var theCommentId = '';
var buildFormName = '';

$('.comment_submit').bind('click', function() {
    theCommentId = $(this).attr('this_id');
    buildFormName = ('#AddMessageForm_' + theCommentId);
}); 

alert(buildFormName);

这将返回'#AddMessageForm_1'(或2或234,具体取决于单击的按钮)。那部分工作得很好。

但是我需要在这里传递buildFormName,这样我就可以处理多个不同名称的表单。表单名称是从附加到addMessageForm

的id号动态生成的
$(buildFormName).submit(function(e) {
    // process form data here...
    $.post('process.php', $(this).serialize(), function(msg) {
    }

上面没有返回任何错误,但$this为空,我无法从空$this创建数据库行!如果我不尝试在那里传递变量buildFormName,它就有效。例如:

$('#addMessageForm_1').submit(function(e) {
    // process form data here...
    $.post('process.php',$(this).serialize(),function(msg){
    }

工作正常。我希望我在这里缺少一些简单的东西。非常感谢任何帮助!

谢谢!

2 个答案:

答案 0 :(得分:1)

您应该将提交处理程序作为单独的函数创建,然后使用它。试试这个。

$('.comment_submit').bind('click',function(){
    theCommentId = $(this).attr('this_id');

    buildFormName = ('#AddMessageForm_' + theCommentId);

    $(buildFormName).submit(formSubmitHandler);
}); 

function formSubmitHandler(){
   // process form data here...

   $.post('process.php',$(this).serialize(),function(msg){

   }
}

答案 1 :(得分:0)

尝试将this替换为e.target,看看是否有帮助。

$(buildFormName).submit(function(e) {
    // process form data here...
    $.post('process.php', $(e.target).serialize(), function(msg) {
}