2017-02-01 36 views
-1

我建立了一個流星灼燒的應用程序,現在我正試着用CodeceptJS來測試它。問題是,我的所有輸入字段在DOM(F12模式)中都沒有值,但我在瀏覽器中看到了這些值。在meteor中,我使用template-helpers從我的MongoDB集合中讀取它們,並將它們傳遞給blaze/spacebars。因此,流星實時(使用JavaScript完成加載/生成後)用JavaScript寫入所有值。如何查找網站加載後生成的輸入值?

我有一個值爲「codeceptjs」的輸入字段。但我無法在DOM中看到它(chrome:F12模式)。它讓我只有這個:

<div class="input"><input data-title type="text" title="Todo Title"></div> 

然而,在我的流星閃耀的文件我有以下:

<div class="input"><input data-title type="text" value={{title}} title="Todo Title"></div> 

同樣的JQuery無法找到他們,因爲在DOM中沒有值:

jQuery('input[value="codeceptjs"]').length 
0 

如何在不更改工作應用程序的情況下使用jQuery/codeceptjs訪問實時輸入值?

+1

'jQuery('input [value =「codeceptjs」]')'找不到任何東西,因爲'input'元素沒有具有該值的屬性。我不確定你的意思是通過訪問'實時輸入值',但'val()'或'prop('val')'應該滿足你的需求。 –

+0

重要的是要明白,更改值屬性(通過代碼或用戶輸入)不會更改值屬性 – charlietfl

+0

我知道我的元素在DOM中沒有此屬性。網頁(DOM)完全加載後,Meteor將在Blaze和JavaScript的幫助下更改所有值。我的應用程序就像一個擁有無限輸入字段的待辦應用程序(例如待辦事項名稱),可以重命名/更改並實時刪除。我在瀏覽器中看到了此字段的值。但是我的瀏覽器並沒有在F12模式下顯示這個值 - 因爲它在DOM之後實時激活它們。必須有辦法找到它們。 –

回答

0

我假設您的網頁(DOM)完成加載後,您的意思是實時添加該值。如果是這種情況,那麼你需要使用JQuery上下文選擇器。

jQuery('input[value="codeceptjs"]', '.input').length 
+0

是的,我相信在網頁(DOM)完全加載後,Meteor會在Blaze和JavaScript的幫助下更改所有值。我的應用程序就像一個擁有無限輸入字段的待辦應用程序(例如待辦事項名稱),可以重命名/更改並實時刪除。在你的解決方案中,我仍然會得到'0',儘管我在瀏覽器中看到這個字段有這個值。但是我的瀏覽器在F12模式下不顯示這個值。 –

1

首先,我認爲你的jQuery獲取輸入值是錯誤的。如果您的值在值爲「codeceptjs」的輸入框中更改,那麼您的jQuery選擇器將找不到已更改的值。這就是爲什麼你用jQuery選擇器得到一個零。

<div class="input"><input id="codeceptjs" type="text" title="My Title"></div> 

如果添加了ID您輸入的標籤,那麼你就可以得到字符串的長度,這樣在輸入框:輸入將給予它一個id或名稱值,這樣可以更好的選擇:

$('#codeceptjs').val().length; 
+0

每個新的mongodb文檔都有一個ID,我在流星中使用它。 Meteor利用Blaze和JavaScript渲染HTML,並使用所有動態實時值生成HTML。如果我能在瀏覽器中看到一個值,就必須有一種方法可以用JQuery/JavaScript來查找它們。我的應用程序就像一個todo應用程序,具有無限輸入字段,可以重命名/更改並實時刪除。 –

+0

我需要一個解決方案,無需更改工作應用程序。其他具有無限輸入字段的流星應用程序不會在DOM中使用html-id屬性,因爲您不需要它。 –

相關問題