我正在尝试选择一个输入框,但因为我可能有多个输入,我试图限制我选择的那个。这是我的jquery代码选择输入但由于某种原因它不起作用。我做错了吗?文档准备就绪后执行此操作。
if ( $("input[name='RETURN.URL'][value='http://link.com?TYPE=P&PID=ST-L09F166&CONSTITUENCY=WBST']").length > 0 )
{
alert("Transcript report");
}
else
{
alert("Not Transcript Report");
}
这里是html
<input type="hidden" name="RETURN.URL" value="http://link.com?TYPE=P&PID=ST-L09F166&CONSTITUENCY=WBST">
<input type="hidden" name="SUBMIT_OPTIONS" value="">
答案 0 :(得分:5)
您的选择器正在使用HTML转义属性值:
[value='http://link.com?TYPE=P&PID=ST-L09F166&CONSTITUENCY=WBST']
选择器的实际值应使用&
而不是&
:
[value='http://link.com?TYPE=P&PID=ST-L09F166&CONSTITUENCY=WBST']
该值是HTML转义的,因此值将在属性中正确表示,但查询选择器需要与实际值匹配。
使用简单的选择器(如类)可能会更好。这一点尤其重要,因为[value]
属性中表示的URL可以按任何顺序包含其查询字符串参数,并表示相同的资源。
答案 1 :(得分:1)
使用jQuery attr()方法
if($("input[value='http://link.com?TYPE=P&PID=ST-L09F166&CONSTITUENCY=WBST']").attr('name') == 'RETURN.URL'){
alert("Transcript report");
}
else
{
alert("Not Transcript Report");
}
除非另有说明,否则会动态添加这些内容,最好为此输入提供ID,并通过它进行访问。
答案 2 :(得分:1)
HTML实体在浏览器中显示之前已经过翻译,因此&
变为&
等等。因此,当您过滤选择器时,您正在寻找已被翻译成其他东西的东西。
这是JSFiddle。
如果不详细了解为什么要以这种方式选择输入元素,您只需要了解我所说的内容并将选择器更改为:
$("input[name='RETURN.URL'][value='http://link.com?TYPE=P&PID=ST-L09F166&CONSTITUENCY=WBST']")
答案 3 :(得分:0)
检查值而不是将其用作选择器。
if ( $("input[name='RETURN.URL']").val().length > 0 )
{
alert("Transcript report");
}
else
{
alert("Not Transcript Report");
}
答案 4 :(得分:0)
丢失RETURN.URL
中的点(这不是向输入元素添加点名称的首选方式)
&安培;使用$('input[name=RETURNURL]').val().length