【问题标题】:how to preserve space in HTML select option list<option value='hi this'>hi</option> [duplicate]如何在 HTML 选择选项列表中保留空间<option value='hi this'>hi</option>
【发布时间】:2016-07-07 19:24:12
【问题描述】:

我有一个选择控件。我尝试使用 jquery 更新此控件,但省略空格后的值。

if (brandObj != "") {
    brandObj = eval("(" + brandObj + ")"); 
    $.each(brandObj, function(i, item) {
        $("#<%=listBrand.ClientID%>").append(  "<option value="+ item.Brand + ">" + item.Brand + "</option>");
    });

}

我从服务器获取的数据

但是在它呈现为 HTML select 之后,它会省略 space.whole 之后的单词,但是一旦我得到 value ,它就只有一半(双引号中的值)。我尝试添加&amp;nbsp;,但它按原样显示。它没有渲染为空间。请给出你的建议。

【问题讨论】:

  • .append("&lt;option value='" + item.Brand + "'&gt;" ... 注意单引号
  • eval()?严重地?我不认为你真的想要那个,我很确定你不需要它。 brandObj 可以有什么价值?
  • 你没有回答我的问题。 brandObj 有什么价值?
  • brandObj 有我从服务器获取的 json 字符串。
  • 嗯,对于 IE7,正确的做法是将 json2.js 包含在条件 cmets 中并调用 JSON.parse()。 IE8 及更高版本原生支持 JSON,不需要额外的 libaray。换句话说,除非您的目标是 IE7,否则您可以直接使用JSON.parse()。见stackoverflow.com/questions/3326893/…

标签: javascript jquery html css asp.net


【解决方案1】:

感谢:Milind Anantwar,我采纳了他的想法并解决了一个困扰了大约 5 天的问题。

    <?php
    foreach($rows as $row):
        $outputstr="$row[Mfrname]";
        $goodstr="<option value='".$outputstr."''>".$outputstr."</option>";
        echo $goodstr;
    endforeach;
    ?>

【讨论】:

    【解决方案2】:

    正如我在comment 中提到的,可以通过将value 属性值包含在引号中来解决该问题。

    .append("<option value='" + item.Brand + "'>" ... 
                           ^                  ^
    

    但是,我建议使用Option 构造函数来动态创建新的&lt;option&gt; 元素。

    演示:

    var arr = [{
        text: 'Hello World!',
        value: 'hello World'
    }, {
        text: 'Bye World!',
        value: 'bye World'
    }];
    
    var select = document.getElementById('mySelect');
    
    // Iterate over array
    arr.forEach(function (obj, i) {
        // Create new <option> with dynamic value and text
        // Add the <option> to the <select>
        select.appendChild(new Option(obj.text, obj.value));
    });
    &lt;select id="mySelect"&gt;&lt;/select&gt;

    【讨论】:

    • 寻找这个小时和小时,感谢 Tushar,对我来说,当您需要下拉菜单中的“myvalue 123”之类的值时,其他解决方案不起作用,而当您需要该值时,您会得到“myvalue”。
    【解决方案3】:

    您应该将属性值的值包含在引号(Quote It)中。如果您不将它们包装在引号中,则空格后的值将被视为属性本身:

    $("#<%=listBrand.ClientID%>").append("<option value='"+ item.Brand + "'>" + item.Brand + "</option>");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-10
      • 2013-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多