2017-02-01 13 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属性,因为您不需要它。 –

相关问题