【问题标题】:JQuery Input[Name=""] not getting recognized on FirefoxJQuery Input[Name=""] 在 Firefox 上无法识别
【发布时间】:2014-01-11 05:59:36
【问题描述】:

我有一个 JavaScript 代码,可以读取 html 文本框的内容,并且正在 IE 和 Chrome 上运行,但 Firefox 无法识别。

HTML 代码:

<div id="SetInner_Form">                
    <form name="Set_Password" method="post" action="">
        Email Address &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <input class="Auth" name="SetPwd_Username" type="text"/><br/><br/>
        New Password   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input class="Auth" name="SetPwd_NewPwd" type="password"/><br/><br/>
        Retype Password &nbsp;<input class="Auth" name="SetPwd_RetypePwd" type="password"/><br/><br/>
        <div id="SetPwdResultWrapper">
            <div id="SetPwdResult" class="Validation_2"></div><br/>
        </div>
        <div id="RedirectLink" align="center" class="NoDisplay">Click <a href='https://localhost/webapp/index.aspx'>here</a> to go to main page</div><br/>
    </form>
    <div id="SetPwdBtnWrapper">
        <input id="SetPwdBtn" name="SetPwdBtn" type="submit" value="Confirm" align="center"/>
    </div>
    <img id="LoadingIcon_auth"/>
</div>

Javascript 代码:

$("input[name=SetPwd_Username]").val()

异常(在 Firefox 控制台上):

Uncaught exception: Syntax error, unrecognized expression: input[name=SetPwd_Username

JQuery 版本为:jquery-1.6.4.min.js

奇怪的是,Firefox 可以识别除 SetPwd_Username 之外的其他 html 元素

我错过了什么吗?

【问题讨论】:

  • 是的,您错过了值为字符串的部分,需要您输入单引号
  • 你是想读它something = $(...).val()还是赋值$(...).val(something)
  • 我正在阅读某物的价值。我已经找到了罪魁祸首(正如 cookie monster 所说),我错过了结束 ]。

标签: javascript jquery html css firefox


【解决方案1】:

你必须注意到:css和jquery之间有一个区别,那就是sysmbon "'" 在 jquery 中

 $("input[name='SetPwd_Username']")

在css中

input[name=SetPwd_Username]{
}

【讨论】:

    【解决方案2】:

    根据您的错误消息,您忘记了选择器中的关闭 ]

    这个:

    "input[name=SetPwd_Username"
    

    将无效,并产生确切的错误消息。


    Chrome 不会给出无效选择器的错误。似乎它的.querySelectorAll() 实现并没有按应有的方式拒绝它。这就是差异的原因。

    因为 Firefox 正确拒绝了选择器,所以它默认使用 Sizzle 引擎,然后抛出错误。由于 Chrome 不会拒绝它,因此您不会收到错误消息。

    【讨论】:

    • 这个发现对我有用!我确实错过了包括右括号。后续问题,是否有工具可以让我验证或检查这些更正?因为我只使用 notepad++ 作为我的 javascript 编辑器。
    • 您的意思是格式错误的选择器?除了在控制台中查找错误消息之外,我不知道。
    【解决方案3】:

    尝试将字段名称放在单引号中。

    $("input[name='SetPwd_Username']").val()
                  ^ here          ^ and here
    

    【讨论】:

    • 这不是必需的。没有引号是完全有效的。
    • @cookiemonster 我猜是这样!
    • 这应该可以使用或不使用引号。文档说它可以是不带引号的单个单词或带引号的字符串。 api.jquery.com/attribute-equals-selector
    • @Masterbuddha 我认为在这种情况下,最好保持一致并始终包含单引号
    • @jasonscript 我同意,我倾向于总是为属性选择器使用引号。
    猜你喜欢
    • 2019-05-17
    • 2012-08-04
    • 2012-08-06
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 2012-02-17
    • 2014-03-20
    相关资源
    最近更新 更多