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 ボックスの値を配列内の対応する値に変更したいと考えています。数式を検索キーとして使用し、A[i].dose の値を txtdose に、A[i].form の値を txtform に取得したい...正しい値を検索する関数を作成しましたが、関数でキーを送信した部分でエラーが発生します。未定義で、「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;

(また、コードを少し分割して変数を使用することをお勧めします。すべてを 1 行にまとめるのは難しいです。最適化ミニファイアを使用して、圧縮されたリリース バージョンを作成してください)

于 2013-08-10T14:14:02.320 に答える