1

我有以下选择选项:

<select id='media' name='media'>
   <option value='1'>media1</option>
   <option value='2'>media2</option>
   <option value='3'>media3</option>
</select>

并使用以下 jquery 代码显示所选值:

$(document).ready(function() {  
    $("#media").change(function() {
        var id = $(this).val();
        alert(id);
    });
});

问题是如果我选择 Media1,在第一次页面加载后,它不会显示任何内容。如果我选择 media2 或 media3 那么它会正确显示它们的值。即使我在选择 media2 或 media3 后选择了 media1,media1 的值也会照常显示。也许这是因为在页面加载时 media1 是默认选择的第一个选项,当我首先选择相同的 media1 选项时,选择选项的值保持不变(media1)。

如何解决这个问题?IE。即使我一开始选择第一个选项,它的价值也会显示出来。

4

4 回答 4

0

您可以在选择框的页面加载时触发更改事件。这样,只要说第一个项目被填充到选择框中,它就会触发该事件。

例如:$("#select").trigger('change');

于 2014-12-06T18:00:21.640 回答
0

您可能想使用 keyup。您应该使用另一种通知用户的方法,因为使用警报并不漂亮。我想指出,您没有对代码中的 dataString 做任何事情。你的意思是在警报中使用它吗?

使用任何一个$("#media").keyup(function() {...});

您可能需要将此与您的更改逻辑结合起来。只要确保不要使用其他警报方法。您的代码可能如下所示:

var dataString = '';
var media = $("#media");
$(document).ready(function()
{
    //page has loaded
    dataString = getAlertValue(this);
    media.change(function()
    {
       dataString = getAlertValue(this);
       alert(id);
       return false;
    });

    media.click(function()
    {
       dataString = getAlertValue(this);
       alternateAlertMethod(id);
       return false;
    });
});

function getAlertValue(element){
    var id=$(this).val();
    var dataString = 'id='+ id;
    return dataString;
}

function alternateAlertMethod(id){
    console.log(id);
}

此外,拥有一个告诉用户选择一个选项的虚拟选项可能是一个不错的选择。

于 2013-09-20T14:23:20.407 回答
0

change的值改变时,事件会触发(相当明显)select。如果页面加载时的值为1,则再次选择该值不会引发事件。

如果您不希望这种行为,则需要添加另一个选项,这将是加载时的默认选项。像这样的东西:

<select id='media' name='media'>
   <option value=''>Please select...</option>
   <option value='1'>media1</option>
   <option value='2'>media2</option>
   <option value='3'>media3</option>
</select>

这样做的副作用是您需要验证是否已做出有效选择。

$(document).ready(function() {  
    $("#media").change(function() {
        var id = $(this).val();
        if (id != '') {
            alert(id);
        }
    });
});
于 2013-09-20T14:11:04.117 回答
0

添加属性:

autocomplete = "off"

到您的表单(或选择)元素,避免浏览器缓存中的数据记忆。

于 2013-09-20T15:15:00.057 回答