0

我正在尝试选择一个输入框,但是因为我可能有多个输入,所以我试图限制我选择的那个。这是我选择输入的 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&amp;PID=ST-L09F166&amp;CONSTITUENCY=WBST">
<input type="hidden" name="SUBMIT_OPTIONS" value="">
4

5 回答 5

5

您的选择器正在使用 HTML 转义属性值:

[value='http://link.com?TYPE=P&amp;PID=ST-L09F166&amp;CONSTITUENCY=WBST']

选择器的实际值应该使用&而不是&amp;

[value='http://link.com?TYPE=P&PID=ST-L09F166&CONSTITUENCY=WBST']

该值是 HTML 转义的,因此该值将在属性中正确表示,但查询选择器需要与实际值匹配。

使用类之类的简单选择器可能会更好。这一点尤为重要,因为属性中表示的 URL[value]可以具有任何顺序的查询字符串参数并表示相同的资源。

于 2013-08-20T15:49:44.890 回答
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,并通过它访问。

于 2013-08-20T15:53:18.447 回答
1

HTML 实体在它们显示在浏览器中之前就被翻译,因此&amp;变成&等等。因此,当您过滤选择器时,您正在寻找已翻译成其他内容的内容。

这是JSFiddle

无需详细说明为什么以这种方式选择输入元素,您只需要了解我所说的并将选择器更改为:

$("input[name='RETURN.URL'][value='http://link.com?TYPE=P&PID=ST-L09F166&CONSTITUENCY=WBST']")
于 2013-08-20T15:54:39.833 回答
0

检查值而不是将其用作选择器。

JSFiddle

if ( $("input[name='RETURN.URL']").val().length > 0 )
{
    alert("Transcript report");
}
else
{
    alert("Not Transcript Report");
}
于 2013-08-20T15:49:46.007 回答
0

丢失点RETURN.URL(它不是将带点的名称添加到输入元素的首选方式)

& 采用$('input[name=RETURNURL]').val().length

于 2013-08-20T15:51:27.987 回答