2011-05-09 85 views
2

我有一个网页,有几种形式。它看起来像this总是从第一种形式获取值。怎么了?

单击“创建”时,ajax脚本会检查字段中第一种形式的非法值,其中“创建”按钮属于该值。没关系。

但是,当单击“保存”按钮时,它仍会检查第一个表单中的字段,而不是保存按钮所属的表单。

我的Ajax看起来像这样

$(document).ready(function(){ 

    // $('form').submit(function() { 
    $('form').live('submit', function(){ 

    var title = $('#title').val(); 

     ... 

难道这里的问题可能是?我尝试了评论的代码,但这也不起作用。

问题可能出在哪里?

+0

怎么样显示周围的保存按钮有问题的代码。此代码不提供很多选项 – gruntled 2011-05-09 22:03:01

回答

2

$('#title').val();的意思是“获取唯一具有ID 标题输入的值”。

如果您违反了规范并且具有多个具有相同ID的元素,那么浏览器通常会通过返回第一个这样的元素从错误中恢复。

您应该ID可能更改为类似:idOfForm_title(让您<label>元素仍然正常工作)

然后用:this.elements.title.value其中title属性的值(和this自动解析到提交事件触发的表单)。

+0

我认为你发现了这个问题。 =)我会马上尝试。将很快返回=) – 2011-05-09 22:10:40

1

我认为你应该给你的表格class,如class="create"为第一/创建表单,然后class="edit"第二/编辑表单。

然后你就可以修改你的jQuery看起来像

$(document).ready(function() { 
    // only work with the 'create' form 
    $('form.create').live('submit', function(e) { 
     e.preventDefault(); // stop the form's default action 

     // the rest of your code 
    }); 

    // only work with the 'edit' form(s) 
    $('form.edit').live('submit', function(e) { 
     e.preventDefault(e); // stop the form's default action 

     // the rest of your code 
    }); 
}); 
+0

这将工作多个到多个编辑窗体? – 2011-05-10 10:31:11

+0

@Sandra Schlichting:取决于您使用的脚本语言(假设PHP),然后是。您可以使用jQuery来隔离'.edit'表单元素,'序列化'输入值,然后将其传递到服务器端文件,在那里它可以对数据库中的记录执行验证/更新等,最终传递返回jQuery的成功或失败通知,然后可以向用户显示消息。 – stealthyninja 2011-05-10 10:39:51

相关问题