我有一段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。但是我不知道怎么做。有人有任何想法吗?
答案 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
}