0

我是 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 的值...我编写了一个函数来搜索正确的值,但是我在函数中发送密钥的部分给出了错误:未定义并且我在“onchange”事件中只更改了 1 个 html txtboxes。

正确的方法:

感谢戴夫!!

<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>
4

1 回答 1

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;

(我还建议您将代码分解一下以使用变量;一行中的所有内容都很难遵循。使用优化缩小器来创建压缩的发布版本)

于 2013-08-10T14:14:02.320 回答