0

コミュニティ、2 つの変数を javascript に渡そうとする選択ドロップダウンがあります。最初の変数は (source_id) で、2 番目の変数は (source_flag) です。

私の選択は次のようになります...

<select id="ticket_source" name="ticket_source" onchange="showEmail(this)">
<option value="">Select Source</option>

クエリを使用して残りのオプションを入力します。

$get_sources = mysql_query("select source_id, source_name, source_flag from ticket_source order by source_name ASC");
while(($source_list = mysql_fetch_assoc($get_sources)))
{
    echo '<option value="'.$source_list['source_id'].'" data-flag="'.$source_list['source_flag'].'">'.$source_list['source_name'].'</option>
}

<option value="0">Other</option>
</select>';

私のJavaScriptは隠しdivを表示させます。data-flag 属性に格納されている値を取得しようとしていますが、それを行う特定のルートがあるかどうかはよくわかりません。

function showEmail(element)
{
    var id = element.value;
    var divTwo = document.getElementById("ticket_source");
    var flag = divTwo.getAttribute('data-flag');
    alert(flag);
    // Do something with flag...
    var div = document.getElementById("received");
    if(id == 2 || id == 3 || id == 5)
    {
        div.style.display = 'block';
    }
    else
   {
       div.style.display = 'none';
   }
}
4

3 に答える 3

2

純粋なjavascriptでこれはどうですか

var flag =document.getElementById('ticket_source').options[select.selectedIndex].data-flag;

また

var flag =element.options[element.selectedIndex].data-flag;
var flag =element.options[element.selectedIndex].getAttribute('data-flag');

ここでフィドルを参照してください

于 2013-09-25T17:03:18.607 に答える
0

これを試して:

var flag = document.querySelector('#ticket_source').dataset.flag; // using javascript
var flag = $('#ticket_source').data('flag'); // using jquery

JSBINリンク:http ://jsbin.com/ujiday/228/

于 2013-09-25T17:04:08.930 に答える
0

最新のブラウザでは、これを行うことができます

document.getElementById('myThing').dataset.flag

ただし、これは HTML5 に準拠していないブラウザーでは機能しないため、上記のコードで行ったように getAttribute を使用する必要があります。

または、jQuery を使用している場合は、Mohit Pandey の回答が適切です。

編集: コードを見ると、選択ボックスからデータ値を取得しようとしているようにも見えますが、PHP ではそれをオプションに追加しています。これにより、null/undefined が返された理由が説明されます。

フィドルを作成しました (jQuery を使用) http://jsfiddle.net/QAsgN/

于 2013-09-25T17:13:47.720 に答える