关于value属性中单词之间的空格的问题

时间:2014-07-03 15:28:32

标签: javascript jquery html

请查看此fiddle

我无法将输入框附加到div元素。

有没有办法让整个短语(例如"选项1和#34;)进入值属性的双引号?

Firebug显示空格后面的单词(" 1"在本例中)超出了这样的引号:

<input type="radio" value="Option" 3>

但我希望它是:

<input type="radio" value="Option 3">

HTML:

<div id="post_text"></div>
<select multiple>
    <option value="A">Option 1</option>
    <option value="B">Option 2</option>
    <option value="C">Option 3</option>
    <option value="D">Option 4</option>
    <option value="E">Option 5</option>
    <option value="F">Option 6</option>
</select>

使用Javascript:

var post_text = $('#post_text');

$("select").multiselect({
    selectedText: "# of # selected",
    click: function (event, ui) {
        if (ui.checked) {
            var span = '<input type="radio" value='+ ui.text +'><div id="' + ui.value + '">'+ ui.text +'</div>'
            post_text.append(span);
        } else {
            post_text.find('#'+ui.value).remove();
        }
    }
});

2 个答案:

答案 0 :(得分:6)

您在属性周围缺少引号:

var span = '<input type="radio" value="'+ ui.text +'"> ...

答案 1 :(得分:3)

詹姆斯有正确的答案,但这里有另一种选择。我总是尝试直接使用javascript来处理值和属性,而不是构建一个大字符串,正是出于这个原因:

所以而不是:

var span = '<input type="radio" value='+ ui.text +'><div id="' + ui.value + '">'+ ui.text +'</div>'
post_text.append(span);

也许可以考虑:

var $input = jQuery("<input>").attr("type", "radio").val(ui.text);
var $div = jQuery("<div></div>").attr("id", ui.value).html(ui.text);
post_text.append($input).append($div);

这样您就不必考虑混合单引号和双引号,或者在内容中删除引号,或者其中任何一个 - javascript函数(jQuery的attrvalhtml函数)为你做所有这些。