如何使用其Id传递给js中的提交函数?

时间:2015-10-12 22:21:08

标签: jquery

我有一段JS代码如下:

$('#modal-confirm').click(function(){
        var myForm = $('#myForm');
        model.saveForm(myForm);
    });

model.saveForm函数位于视图模型对象(knockoutjs)中,如下所示:

self.saveBasicFormData = function(forms){
    if(forms.length>0 && forms.id == 'myForm'){
        var url = //url
        $.post(url,$('#myForm').serialize());
    }
}

但是当我确认模态时,保存函数中的'if(forms.length> 0&& forms.id =='myForm')'没有通过,因此我可以保存表单。实际上myForm变量是一个对象,我想我需要修改那个var。但是我不知道怎么做。有人有任何想法吗?

2 个答案:

答案 0 :(得分:0)

表格参数中没有属性id。因此forms.id == 'myForm'将返回false

答案 1 :(得分:0)

您正在传递一个jQuery对象 - 因此您的forms参数需要被视为jQuery对象(类似数组的对象) - 您的实际表单DOM元素将位于索引0:< / p>

if(forms.length > 0 && forms[0].id == 'myForm'){ 
    ...
    $.post(url, $(forms[0]).serialize());
}

你可以让你的代码更好一些 - 让表单自己提交(例如,url,方法等在表单上定义):

<强> HTML

<form id="myForm" method="post" action="/url/to/form/processor">...</form>

<强>的JavaScript

$(document).on('submit', '#myForm', viewModel.saveMyForm);

// In your knockout code
self.saveMyForm = function(ev){
    var form = ev.target;
    ev.preventDefault(); // prevents the form from submitting

    // do validation / clean data / etc

    form.submit(); // now we can submit the data
}