2011-05-09 25 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

相關問題