1

我的问题可能听起来有点混乱,但我希望读完这篇文章后会更清楚一点。

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);
    });
});

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

4

5 回答 5

1

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

代码

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

});

$('#form').submit(function() {
    alert(id);
});​
于 2012-07-26T00:39:09.000 回答
0

试试这个:

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

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

于 2012-07-26T00:40:03.117 回答
0

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

于 2012-07-26T00:41:17.913 回答
0

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

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

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

});

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

小提琴

于 2012-07-26T00:45:46.790 回答
0

使用类的另一种方法;另外,我假设标记为“selected”的文本框应该显示所选项目的值——在这种情况下,您可以在警报中使用它的最终值:

$('#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() );
});
于 2012-07-26T00:55:09.450 回答