2014-10-20 79 views
0

我使用jQuery表單插件來執行一些Ajax處理,它工作正常,但現在我陷入了困境。 我有一塊代碼,我需要提取一個值(應用程序),所以我可以將它傳遞到另一個函數。從jQuery Form插件中提取輸入字段的值

$(document).ajaxComplete(function() { 

     $(".updateUserRole").ajaxForm(function() { 
      app = $(".updateUserRole").find('input').fieldValue()[1]; 
      alert(JSON.stringify(app)); 

     }); 
    }); 

該模塊工作正常;我得到了應用程序變量中字段的值,但頁面上有多處updateUserRole表單,並且此代碼始終返回第一個值的值。

我真正想要的是這樣的;

 $(document).ajaxComplete(function() { 

     $(".updateUserRole").ajaxForm(function() { 
      app = $(this).find('input').fieldValue()[1]; 
      alert(JSON.stringify(app)); 

     }); 
    }); 

我認爲應該只返回當前事件的值;但它沒有,值是未定義的。

我很明顯誤解了jQuery如何在這裏工作,請問能否幫助我一些有用的人?

+0

爲什麼包裹在ajaxComplete中?什麼是'fieldValue()'方法?如果輸入不是表單中的第一個輸入,則需要更多的絕對選擇器。 – charlietfl 2014-10-20 15:56:26

+0

它被包裝在ajaxComplete中,因爲應用程序列表是通過ajax調用,使用jQuery Form Plugin中的ajaxForm函數加載的。 [fieldValue](http://malsup.com/jquery/form/#fields)方法也來自表單插件。 – 2014-10-20 16:00:15

+0

頁面上有許多updateUserRole表單,我試圖做的是附加一個行爲,以便當用戶點擊其中的一個時,我可以捕獲該特定表單的「應用」值。 – 2014-10-21 08:01:06

回答

0

我想我最好回答我自己的問題的完整性,我的工作版本是;

$(document).ajaxComplete(function() { 

    $(".updateUserRole").ajaxForm(function() { 
     app = getQueryVariable(this.data, 'applicationId'); 
     alert(JSON.stringify(app)); 

    }); 
}); 

this.data包含了我所需要的信息,但返回的查詢字符串,所以我已經使用getQueryVariable略加修改的版本從CSS-Tricks以提取需要我變「的applicationID」。

我確定有更好的方法來做到這一點,並有可能在jQuery中完全做到這一點,但這是有效的,這就是我所需要的。如果任何人都可以提供更好的版本,我會很高興看到它。