我的问题可能听起来有些令人困惑,但我希望在阅读完之后会更加清楚。
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);
});
});
当我点击列表项目然后在点击提交之前点击另一个列表项目时,它会一个接一个地发出警报,例如如果我点击汽车然后骑自行车,它会提示自行车,然后闪烁,然后警告汽车。目的是仅让它警告最终点击,或者换句话说是选择的选项。因此,不是每次点击都发出警报,我希望它能提醒自行车,因为那是最后的选择。
答案 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');
});
答案 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() );
});