Javascript 使用jQuery在wordpress中将文本输入更改为选择
我正在使用WordPress模块abase从数据库中获取一些数据,并将它们发送到表单中。问题是,abase表单不允许使用select输入。正因为如此,我试图将文本输入转换为select。我创建了toSelect函数,将元素id和测试选项列表传递给该函数,并将元素id放入函数定义Javascript 使用jQuery在wordpress中将文本输入更改为选择,javascript,jquery,wordpress,Javascript,Jquery,Wordpress,我正在使用WordPress模块abase从数据库中获取一些数据,并将它们发送到表单中。问题是,abase表单不允许使用select输入。正因为如此,我试图将文本输入转换为select。我创建了toSelect函数,将元素id和测试选项列表传递给该函数,并将元素id放入函数定义 function toSelect(itemid,valuelist) { var out = ''; out += '<select id="bus311mtd_2_status" style="
function toSelect(itemid,valuelist) {
var out = '';
out += '<select id="bus311mtd_2_status" style="width:50px;">';
for (i=0; i < valuelist.length; i++) {
out += '<option value="'+valuelist[i]+'">'+valuelist[i]+'</option>';
}
out += '</select>';
alert(out);
$("#bus311mtd_2_status").replaceWith(out);
//$("#bus311mtd_2_status").replaceWith('<input type="text" value="zamontowane">');
}
alertout提供了很好的select输入代码,但$bus311mtd_2_status.replaceWither不起作用
甚至像:$bus311mtd\u 2\u status.replaceWith这样的东西也不起作用
$("#bus311mtd_2_status").replaceWith('<input type="text" value="zamontowane">');
id为bus311mtd_2_状态的元素确实存在,即使用document.getElementById更改其值可以正常工作
也许jQuery不起作用?您的代码对我来说似乎很好。也许是你的函数调用。我用过:
toSelect(null, ['a', 'b', 'c']);
函数中似乎未使用itemid
这里有一个你的代码工作的小提琴:
下面是该函数的一个稍微优化的版本,它使用itemid参数:
function toSelect2(itemid,valuelist) {
var html = '<select id="' + itemid + '" style="width:50px;"><option>' +
valuelist.join('</option><option>') +
'</option></select>';
$('#' + itemid).replaceWith(html);
}
toSelect2('myInput2', ['d', 'e', 'f']);
感谢您的回答和优化。我最初使用itemid,但由于问题,我临时将其替换为某个现有元素的id,以确保问题在其他地方 所有代码直到第一个警报正常工作,alertout将弹出一个带有文本的窗口:
<select id="bus311mtd_2_status" style="width:50px;"><option value="ready">ready</option><option value="awaiting">awaiting</option></select>
这是意料之中的事。但问题从下一行开始
我想证明,即使像下面这样简单的代码也不起作用
$("#bus311mtd_2_status").replaceWith('<input type="text" value="zamontowane">');
因此,jQuery似乎不受支持
我还有另一个观察:在脚本标记中,不允许有空行,如果有空行,代码将不起作用。对不起,我的以上答案应该作为对您答案的注释出现。请检查控制台是否有任何错误。replaceWith应能正常工作。上述声明没有问题。但是,如果您愿意,您可以使用替代方案$母线311MTD_2_状态。之后。移除;我收到以下错误:TypeError:$不是函数请确保代码中附加了jquery脚本,或者通过控制台上的$.fn.jquery进行检查。它将返回一个版本号。如果没有,请将jquery插件添加到代码中。并将我的代码更新为jQuerybus311mtd_2_status.after.remove;这就是问题所在。现在它工作得很好。但还有一件事:替换后的元素不会从当前主题中获得样式,它们不需要任何样式。是否有任何方法可以将样式附加到当前主题中?如果您的样式来自一些短css代码,请将它们复制到css类中,并在输入标记中使用它们。如果它来自JS/Jquery,那么调用负责设计其他类似元素样式的函数。或者使用jquery css方法应用自定义css属性。