0

社区,我有一个选择下拉列表,它试图将两个变量传递给 javascript。第一个变量是 (source_id),第二个是 (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 回答