Javascript 如何为动态创建的输入字段动态设置值?
因此,我有以下方法根据指定值绘制输入字段:Javascript 如何为动态创建的输入字段动态设置值?,javascript,jquery,laravel,Javascript,Jquery,Laravel,因此,我有以下方法根据指定值绘制输入字段: function drawInputs() { let type = reCalcType.options[reCalcType.selectedIndex].value; let container = document.getElementById("form_inputs"); let fields = getInputsArr(type);
function drawInputs() {
let type = reCalcType.options[reCalcType.selectedIndex].value;
let container = document.getElementById("form_inputs");
let fields = getInputsArr(type);
let localDateTimePickerClass = "update-commission-date-picker";
//delete all
while (container.hasChildNodes()) {
container.removeChild(container.lastChild);
}
//add each input field
for (let k in fields) {
let row = document.createElement("div");
row.setAttribute("class", "row");
row.setAttribute("style", "margin-left: 5px;");
let col = document.createElement("div");
col.setAttribute("class", "col-lg-6 col-mg-6");
let label = document.createElement("label");
let input = document.createElement("input");
if (fields.hasOwnProperty(k)) {
let field = fields[k];
label.setAttribute("for", field);
label.innerHTML = field; //we rewrite it further!
input.setAttribute("name", field);
input.setAttribute("class", "form-control");
if (field === date_begin || field === date_end) {
input.setAttribute("class", localDateTimePickerClass + " form-control");
input.setAttribute("type", "datetime");
} else {
input.setAttribute("type", "number");
}
if (field in oldValues) {
input.setAttribute("value", oldValues.field); //todo set value
}
}
col.appendChild(label);
col.appendChild(input);
row.appendChild(col);
container.appendChild(row);
container.appendChild(document.createElement("br"));
}
$("."+localDateTimePickerClass).datetimepicker({locale: locale, useCurrent: false, format: date_format}) //to init just created date fields
}
它工作正常一切都设置正确并以正确的方式附加,但我在输入字段中设置值的部分不起作用
if (field in oldValues) {
input.setAttribute("value", oldValues.field); //todo set value
}
这里是我的旧价值观:
let oldValues = {
'{{ \App\Console\Commands\BaseCommand::MERCHANT_ID }}' : '{{ old(\App\Console\Commands\BaseCommand::MERCHANT_ID) }}',
'{{ \App\Console\Commands\BaseCommand::DATE_BEGIN }}' : '{{ old(\App\Console\Commands\BaseCommand::DATE_BEGIN) }}',
'{{ \App\Console\Commands\BaseCommand::DATE_END }}' : '{{ old(\App\Console\Commands\BaseCommand::DATE_END) }}',
};
我知道这不是最好的方法,但我必须用拉威尔的旧价值观。
如何为输入字段添加值
我得到的是:
验证错误后的预期输出:
p.S.旧值正确并显示在
控制台上。log
并且在调用drawInputs
函数之前对其进行初始化您可以尝试使用input.value=oldValues[字段]
这可能是罪魁祸首,因为如果你使用点,这意味着该领域是字面上的领域
input.value = oldValues[field];
如本文所述,要设置输入值,不应设置属性,而应设置其值
因此,您应该替换这部分代码
if (field in oldValues) {
input.setAttribute("value", oldValues.field); //todo set value
}
用这个
if (field in oldValues) {
input.value = oldValues.field;
}
尝试
input.value=oldValues.field代码>而不是input.setAttribute(“value”,oldValues.field)
@ChanYungKeat不起作用,尝试了innerHTML
和innerText
同样,我没有可以重写这种行为的外部js库,所以我无法找出什么是错误的请检查问题点的意思是它的字面意思是旧值['field']请检查对问题的评论我认为这是回答,正确访问oldValues属性,oldValues.field始终未使用此符号定义