0

我需要<select>在一些 jquery 的元素中发送所选选项的值以发送到我的 php 文件。

不幸的是,我一直得到一个未定义的值......

<select name="query" id="query">
    <option value="join-us">Join Us</option>
    <option value="work-with-us">Work with us</option>
    <option value="about-pf">About Planet Fitness</option>
    <option value="other">Other</option>
</select>

var query = $('#query option:selected').text();

console.log('query = ' + query);

console.log 返回

查询=未定义

我试过使用$('#query').val();$('#query').text();

我不知道在这里还能做什么。

在我看来,:selectedpsuedoclass 需要选项在标记中显示如下。

<option value="bla" selected="selected">bla</option>

显然,我错过了这些,但更改下拉列表中的选择并没有改变这一点,我认为自己将其添加到标记中没有任何意义......

任何帮助将不胜感激

4

5 回答 5

1

你应该使用.val()

$('#query').change(function () {
    var query = $(this).val();
    $('#result').html('query = ' + query);
});

你应该在$('#query').val()你要提交的那一刻打电话。

http://jsfiddle.net/33GSy/1/

于 2013-02-21T14:31:18.820 回答
1

给你……使用 jQuery 1.8.3……


实验一现场演示

代码

<select name="query" id="query">
    <option value="join-us">Join Us</option>
    <option value="work-with-us">Work with us</option>
    <option value="about-pf">About Planet Fitness</option>
    <option value="other">Other</option>
</select>

<script>
    var query1 = $('#query option:selected').text();
    var query2 = $('#query').val();
    var query3 = $('#query').text();

    alert('query1 = ' + query1 + '\nquery2 = ' + query2 + '\nquery3 = ' + query3);
    console.log('query1 = ' + query1 + '\nquery2 = ' + query2 + '\nquery3 = ' + query3);
</script>

输出

铬合金:

query1 = Join Us
query2 = join-us
query3 = 
    Join Us
    Work with us
    About Planet Fitness
    Other

IE:

query1 = Join Us
query2 = join-us
query3 = Join Us Work with us About Planet Fitness Other

火狐:

query1 = Join Us
query2 = join-us
query3 = 
    Join Us
    Work with us
    About Planet Fitness
    Other

实验二现场演示

代码

    <script>
        function getMyValue() {
            var query1 = $('#query option:selected').text();
            var query2 = $('#query').val();
            var query3 = $('#query').text();

            alert('query1 = ' + query1 + '\nquery2 = ' + query2 + '\nquery3 = ' + query3);
            console.log('query1 = ' + query1 + '\nquery2 = ' + query2 + '\nquery3 = ' + query3);
        }
    </script>
</head>

<body>
    <select name="query" id="query">
        <option value="join-us">Join Us</option>
        <option value="work-with-us">Work with us</option>
        <option value="about-pf">About Planet Fitness</option>
        <option value="other">Other</option>
    </select>

    <button onclick="getMyValue();">Click Me</button>
</body>

输出(选择“与我们合作”后单击按钮

铬合金:

query1 = Work with us
query2 = work-with-us
query3 = 
    Join Us
    Work with us
    About Planet Fitness
    Other

IE:

query1 = Work with us
query2 = work-with-us
query3 = Join Us Work with us About Planet Fitness Other

火狐:

query1 = Work with us
query2 = work-with-us
query3 = 
    Join Us
    Work with us
    About Planet Fitness
    Other

推理

Your code works fine, should be something wrong with the way you are invoking it, try putting alerts all over the place...

于 2013-02-21T15:49:24.027 回答
0

你什么时候打电话$('#query option:selected').text();

这对我来说很好:

$('#query').change(function() {
    var query = $('#query option:selected').text();

    console.log('query = ' + query);
})

JSF中。

编辑:反对票是怎么回事?我提供的示例在 Chrome 和 IE 中运行良好。

这是一个更新版本,显示了与按钮单击事件完全相同的内容:JSFiddle

于 2013-02-21T14:26:08.453 回答
0
$('#query option').filter(':selected').val();

JSFIDDLE

于 2013-02-21T14:27:48.193 回答
0

这工作得很好。

var query = $('#query option:selected').text();
console.log('query = ' + query);

请参阅下面的 jsFiddle:

http://jsfiddle.net/FJCSu/3/

于 2013-02-21T14:33:31.470 回答