我有一个字符串“魔术词”。我需要将它用作javascript生成的html复选框中的值。
在javascript中
var itemValue= "Magic task";
var opt = "<input type='checkbox' name='test' id='test' value="+ itemValue+ "/>"+itemValue+ "<br />";
alert(opt);
$(optionDiv).append(opt);
在警告中它显示的是实际值,但在提交表单后,我只得到第一个单词作为值。它忽略了第二个单词。
由于 拉维康德
答案 0 :(得分:6)
您需要用单引号包装值:
"<input type='checkbox' name='test' id='test' value='" + itemValue + "' />"
答案 1 :(得分:1)
如果不使用引号,则属性值将以空格结尾。您呈现的字符串显示为
<input type='checkbox' name='test' id='test' value=Magic Word />
所以解析器看到了
value=Magic
和没有值的属性Word
。你可以看到上面帖子中的着色。
您需要在值
周围添加单引号var opt = "<input type='checkbox' name='test' id='test' value='" + itemValue + "' />"+ itemValue+ "<br />";
^ ^
这在哪里失败?如果您的字符串中有'
。您需要添加替换方法并将其交换为@apos;
itemValue = itemValue.replace(/'/g,"@apos;");
答案 2 :(得分:1)
如果您正在使用jQuery(因为我在您的代码中看到$
的用法),最好使用jQuery本身:
var itemValue= "Magic Word";
var opt = $('<input>').attr({
type: 'checkbox',
name: 'test',
id: 'test',
value: itemValue
});
它可以防止任何更加严重的错误,例如,如果您的字符串中有'
:
var itemValue= "Magician's Word";