当点击不是最新的时,jquery select返回两个选项

时间:2012-07-26 00:30:14

标签: jquery jquery-ui

我的问题可能听起来有些令人困惑,但我希望在阅读完之后会更加清楚。

HTML

<form id="form">
selected: <input type="text" name="opt" id="opt">
<ul id="list">
<li>car</li>
<li>bus</li>
<li>bike</li>
</ul>
<input type="submit" name="submit" value="submit">
</form>

的JavaScript

$('#list li').click(function(){
    var id= $(this).text();
    $('#form').submit(function(){
        alert(id);
    });
});

当我点击列表项目然后在点击提交之前点击另一个列表项目时,它会一个接一个地发出警报,例如如果我点击汽车然后骑自行车,它会提示自行车,然后闪烁,然后警告汽车。目的是仅让它警告最终点击,或者换句话说是选择的选项。因此,不是每次点击都发出警报,我希望它能提醒自行车,因为那是最后的选择。

5 个答案:

答案 0 :(得分:1)

试试这个:工作演示 http://jsfiddle.net/RFgYk/1/ http://jsfiddle.net/RFgYk/

<强>码

$('#list li').click(function() {
    id = $(this).text();

});

$('#form').submit(function() {
    alert(id);
});​

答案 1 :(得分:0)

试试这个:

$('#form').submit(function(){
    id = $('#list li.selected').text();
    alert(id);
});

在这里,您只提醒最后一个。

答案 2 :(得分:0)

每次点击都会提交表单。根据你的代码。因此,每次点击都会运行警报。为什么不使用实际标签?对你希望做的事感到好奇。您还可以将表单提交从click函数中拆分出来,并将列表值存储在全局Var

答案 3 :(得分:0)

每次单击li时都会添加提交处理程序,因此对于每次单击,您将从创建的提交处理程序中获取相应li的警报,您应该在某处设置提交处理程序在click处理程序之外。

您可以在点击处理程序中设置最后点击的项目的值,并在提交处理程序中检索它,例如

$('#list li').click(function() {
    $('#form'.data('last', $(this).text());

});

$('#form').submit(function() {
    alert($('#form'.data('last');
});​

FIDDLE

答案 4 :(得分:0)

使用类的替代方法;此外,我假设标记为“已选择”的文本框应显示所选项目的值 - 在这种情况下,您可以在警报中使用其最终值:

$('#list li').click(function(){
    $('#opt').val($(this).text());
    $(this).addClass('selected');
    $('#list li').not(this).removeClass('selected');
});

$('#form').submit(function(){
    //To use selected item do: $('#list li.selected')

    alert( $('#opt').val() );
});