Javascript 如何使用选择器组合使用Prototype.js获取空字段

Javascript 如何使用选择器组合使用Prototype.js获取空字段,javascript,css,css-selectors,prototypejs,Javascript,Css,Css Selectors,Prototypejs,如何组合此选择器并使用prototype.js获取输出 我的HTML代码: <input id="age" value=""> <span id="movieSelection" class="defaultText"> <button >addButton</button> 将给我空的年龄字段 $$('span[id*=movieSelection]:and[class*=defaultText]').length 将给我空的选择

如何组合此选择器并使用prototype.js获取输出

我的HTML代码:

 <input id="age" value="">
 <span id="movieSelection" class="defaultText">
 <button >addButton</button>
将给我空的年龄字段

  $$('span[id*=movieSelection]:and[class*=defaultText]').length
将给我空的选择

现在我想将这两种情况合并为一个$$()长度,这将满足我的要求

假设我有10行,其中我填写了3个年龄值,所以选择器应该给我的答案是7,因为年龄和电影的组合选择列的空值是7

请帮帮我。 提前感谢。

尝试此选择查询

$$('input[id*=age]:and[value=""],span[id*=movieSelection]:and[class*=defaultText]').length 

属性选择器只检查元素的初始状态,而不检查修改后的状态。因此,输入元素的属性选择器将无法工作。如果您只想确保它不是空的,那么可以使用:valid selector&将required属性添加到元素中

你还应该考虑在其他元素下包装元素(输入和跨度)。目前,span和输入之间似乎没有任何关系。如果有多个跨距和输入,则很难检查哪个跨距对应于哪个输入

最后,要回答您的问题,您可以使用以下选择器。它将选择具有defaultText类的span元素&前面有空输入元素。但请记住,它将只返回span元素。如果您的目标只是检查长度,那么这就足够了。否则,修改此选择器以返回包括输入在内的所有元素

'input[id*=age]:not(:valid) + span[id*=movieSelection][class*=defaultText]'

我修改了wared创作的小提琴。您可以在这里查看它:

试试
(“或”)。不过,我怀疑还有比做出选择更大的问题。另外,如果我是你,我会重新考虑一个新项目的原型。我试过了,但它给了我长度作为两者的组合,例如,有两行的年龄字段为空,跨度类为默认文本假设有两行,那么年龄和跨度字段都为空…上面的选择给我的值为4。这里的输出预期为2,因为我想要两者的组合。
'input[id*=age]:not(:valid) + span[id*=movieSelection][class*=defaultText]'