2016-12-21 23 views
0

JavaScript関数から選択オプションから一度に値を取得するにはどうすればよいですか?私は$ledger_idを取得し、スクリプトにsetDebit()て、この値を送信していますselectオプションから一度に2つの値を取得する

<select name="ledger" id="ledger" onchange="setDebit(this.value)" required> 
    <option value="" >Select</option> 
    <?php 
     $ledgerResult = $this->db->query('SELECT * FROM ledger WHERE account_type = "Creditors" ORDER BY name'); 
     $ledgerData = $ledgerResult->result(); 

     for ($c = 0; $c < count($ledgerData); ++$c) { 
        $ledger_id = $ledgerData[$c]->id; 
        $ledger_name = $ledgerData[$c]->name; 
        $ledger_credit = $ledgerData[$c]->credit; ?> 

     <option value="<?php echo $ledger_id;?>"><?php echo $ledger_name;?></option> 
     } 
</select> 

<script> 
    function setDebit(ele){ 
     document.getElementById("set_debit").value = ele; 
    } 
</script> 

は、ここに私のコードです。しかし、私が必要とするのは$ledger_creditです。私はそれを$ledger_id;の代わりにオプション値として設定することでそれを行うことができますが、selectの値も$ledger_idとする必要があります。

$ ledger_idをオプション値として設定するには、どうすれば$ ledger_creditをsetDebit(this.value)まで送信できますか?

+0

あなたは "2つの値を取得する" とはどういうことですか? * mutiple *を選択しますか? – donald123

+0

オプションの値に$ ledger_id。 ":"。$ ledger_creditの両方をCONCATし、次にjavascriptで分割します。 var.split( ":") – JustBaron

+0

いいえ、私は$ ledger_idとしてオプション値を設定する必要があります。しかし同時に、私はsetDebit()関数を通して$ ledger_creditを送る必要があります。 – Saud

答えて

0

にjqueryのを使用する必要があります。

<option value="<?php echo $ledger_id."||".$ledger_credit; ?><?php echo $ledger_name;?> </option> 
<script> 
    function setDebit(){ 
    var details = document.getElementById("ledger").value; 
    var allData = details.split("||"); 
    var ledger_id = allData[0]; 
    var ledger_credit = allData[1]; 
    console.log(ledger_id); 
    console.log(ledger_credit); 
} 
</script> 
+0

働いていない。詳細変数が元帳から期待値を取得していません。 – Saud

+0

jqueryを使用していますか? –

+0

@Saud編集した質問 –

0

あなたはHTMLの一部の属性の複数設定する必要があります:あなたは、さらに情報のため、この質問を見て持つことができた後 http://www.w3schools.com/tags/att_select_multiple.asp

を: How to get all selected values of a multiple select box using JavaScript?

+0

あなたはポイントを得ていませんでした。オプション、つまり$ ledger_nameを選択します。オプション値は$ ledger_idに設定され、setDebit(this.value)関数の値は$ ledger_creditに設定されます。 – Saud

+0

ああ、IDを送信してサーバ側のクレジットに戻すことについて考えるべきではないか(PHPコードでは連想配列やデータベースクエリを使用する)、クライアント側のものは簡単にスプーフィングされる可能性があります – ShadowBeast

1
<option value="<?php echo $ledger_id.":".$ledger_credit;?>"><?php echo $ledger_name;?></option> 

    function setDebit(ele){ 
      var Value = document.getElementById("ledger").val(); 
      var Parts = Value.split(":"); 
      var LedgerID = Parts[0]; 
      var LedgerCredit = Parts[1]; 
    } 
0

あなたはatributeを追加することができますdata-creditあなたのオプションで

<option value="<?php echo $ledger_id;?>" data-credit="<?php echo $ledger_credit;?>"><?php echo $ledger_name;?></option> 

setDebit機能:あなたはjqueryのを使用していない場合

var ledger_credit = $('option:selected', "#ledger").data('credit'); 

あなたは、このソリューション

関連する問題