我是jQuery的新手,通常我会自己搜索,直到找到它,但我已经没时间了......所以我希望有人可以帮助我。
<select name="txtshort" id="txtshort">
<option value="Achyranthes+AC0-and+AC0-Plantago+AC0-Formula">Ach+AC0-pl</option>
<option value="Aconite+AC0-and+AC0-G.L.+AC0-Combination">Ac+AC0-gl</option>
</select>
<input type="text" id="txtformula" name="txtformula" value="">
<input type="text" id="txtdose" name="txtdose" value="">
<input type="text" id="txtform" name="txtform" value="">
<script type="text/javascript" >
var array A=[
{
"mednr":"5",
"short":"Ach+AC0-pl",
"formula":"Achyranthes+AC0-and+AC0-Plantago+AC0-Formula",
"dose":"250",
"quant":"2/d",
"form":"Tabletten"
},{
"mednr":"6",
"short":"Ac+AC0-gl",
"formula":"Aconite+AC0-and+AC0-G.L.+AC0-Combination",
"dose":"2/d",
"form":"Tabletten"
}
];
jQuery(document).on("change", "#txtshort", function() {
jQuery("#txtformula").val(opzoekenMedicijn(jQuery("#txtshort").val(),"vorm"));
}).val( jQuery('#txtformula').val() ).change();
var searchMed = function(afk, key){
for (var i = 0; i < A.length; i++) {
if (A[i].formule == afk){
return A[i].key;
}
}
};
</script>
因此,当我的选择框的值发生变化时,我想将txt框中的值更改为数组中的相应值。我使用公式作为搜索关键字,我希望txtdose中的A [i] .dose值和txtform中的A [i] .form的值... 我编写了一个函数来搜索正确的值,但是我在函数中发送密钥的部分给出了错误:undefined和van只在“onchange”事件中更改了1个html txtbox。
正确的方法:
感谢Dave !!
<select name="txtshort" id="txtshort">
<option value="Achyranthes+AC0-and+AC0-Plantago+AC0-Formula">Ach+AC0-pl</option>
<option value="Aconite+AC0-and+AC0-G.L.+AC0-Combination">Ac+AC0-gl</option>
</select>
<input type="text" id="txtformula" name="txtformula" value="">
<input type="text" id="txtdose" name="txtdose" value="">
<input type="text" id="txtform" name="txtform" value="">
<script type="text/javascript" >
var array A=[
{
"mednr":"5",
"short":"Ach+AC0-pl",
"formula":"Achyranthes+AC0-and+AC0-Plantago+AC0-Formula",
"dose":"250",
"quant":"2/d",
"form":"Tabletten"
},{
"mednr":"6",
"short":"Ac+AC0-gl",
"formula":"Aconite+AC0-and+AC0-G.L.+AC0-Combination",
"dose":"2/d",
"form":"Tabletten"
}
];
var searchMed = function(search){
for (var i = 0; i < A.length; i++) {
if (A[i].formule == search){
return A[i];
}
}
};
jQuery(document).on("change", "#txtshort", function() {
var base = opzoekenMedicijn( jQuery("#afkorting").val() );
jQuery("#txtformula").val(base.formula);
jQuery("#txtdose").val(base.dose);
jQuery("#txtform").val(base.form);
});
</script>
答案 0 :(得分:0)
花了一段时间来弄清楚你在做什么,但问题是你是如何尝试获取命名属性的。
var myObject = {foo:"hi", bar:"bye"};
var lookFor = "foo";
console.log( myObject.lookFor ); // undefined: myObject has no attribute "lookFor"
console.log( myObject[lookFor] ); // "hi": lookFor = "foo", myObject.foo is "hi"
所以将.key
更改为[key]
即可。
更典型的方法是返回对象:
function opzoekenMedicijn( search ) {
for (var i = 0; i < arrayFromPHP.length; i++) {
if (arrayFromPHP[i].formule == search){
return arrayFromPHP[i];
}
}
};
然后像这样使用它:
var value = opzoekenMedicijn( "lookForThis" ).formule;
虽然您需要注意不要搜索不存在的密钥,或特别处理退货:
var found = opzoekenMedicijn( "lookForThis" );
var value = found && found.formule;
(我还建议稍微破坏你的代码以使用变量;一行上的所有内容都难以理解。使用优化缩小器来创建压缩版本)