【问题标题】:Syntax error, unrecognized expression: option[value=property name]语法错误,无法识别的表达式:option[value=property name]
【发布时间】:2015-01-28 17:28:06
【问题描述】:

我有一个看起来像这样的数据列表

<datalist id="properties">
       <option value="property name"></option>
       <option value="property"></option>
</datalist>

现在我正在使用此代码来查找用户输入的值在列表中的位置:

var user_property = $('#user_property').val().toLowerCase(); // taken from input type with id user_property
var pro = $('#properties').find("option[value="+user_property.replace(' ','-')+"]");
if(pro != null && pro.length > 0)
{
    // run some code
}
else
{
    // show error popup
}

var pro = $('#properties').find("option[value="+user_property.replace(' ','-')+"]"); 出现错误

错误代码为Syntax error, unrecognized expression: option[value=property name]

如何摆脱这个错误?

【问题讨论】:

    标签: javascript jquery datalist


    【解决方案1】:

    尝试添加引号,如:

    var pro = $('#properties').find("option[value='"+user_property.replace(' ','-')+"']");
    

    或者更好地分解为:

    var replaced = user_property.replace(' ','-');
    var pro = $('#properties').find("option[value='"+replaced+"']");
    

    如果您想检查诸如“属性名称”之类的文本,那么您可以直接这样做:

    var pro = $('#properties').find("option[value='"+user_property+"']");
    

    【讨论】:

    • 可以,但是选项列表有“属性名”,所以它会返回 false
    • @runningmark 如果您想检查“属性名称”,则无需进行替换......就像我添加的答案一样......!
    • 这很奇怪,您的第二个解决方案是在 firefox 上工作,但在 chrome 上却不行:\
    • 这很有趣,它突然停止在 firefox 和 chrome 上工作,然后我意识到页面的源代码没有更新,然后我放弃了 aptana 的崇高文本:D 无论如何谢谢你回答:)
    【解决方案2】:

    尝试在值周围添加引号,它会起作用。

    $('#properties').find("option[value='property name']")
    

    【讨论】:

      【解决方案3】:

      您需要为您的价值添加单引号,例如

      var pro = $('#properties').find("option[value='"+user_property.replace(' ','-')+"']");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-04
        • 2012-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多