我知道change
中的jQuery
事件处理与类型select
的输入相关联。但我想知道用户是否在select元素中选择了另一个值!所以当用户在select中选择一个新元素但我想知道用户是否选择了不同的值时,我不想运行代码!
实际上我的表单中有两个选择元素,我想只在两个选择元素被更改时才启动ajax。那么如何知道这两个元素已被改变?
答案 0 :(得分:2)
首先,您可以使用select
事件处理程序(为某些标志设置值)。这是它的工作原理:
$('#select').change(function () {
alert($(this).val());
});
或者您可以将原始值存储在某处,然后进行检查:
$(document).ready(function () {
var val = $('#select').val();
...
// in some event handler
if ($('#select').val() != val) ...
...
});
答案 1 :(得分:2)
您可以通过在Javascript文件中设置绑定来专门侦听所选元素的更改事件。
这只解决了你问题的一半。您想知道何时选择了不同的元素。
您可以通过创建每次触发事件时更新的跟踪变量来执行此操作。
首先,为跟踪变量指定一个永远不会出现在下拉列表中的值。
// Hugely contrived! Don't ship to production!
var trackSelect = "I am extremely unlikely to be present";
然后,您需要设置一个函数来处理更改事件。
简单的事情: -
var checkChange = function() {
// If current value different from last tracked value
if ( trackSelect != $('#yourDD').val() )
{
// Do work associated with an actual change!
}
// Record current value in tracking variable
trackSelect = $('#yourDD').val();
}
最后,您需要在document.ready。
中连接事件$(document).ready(function () {
$('#yourDD').bind('change', function (e) { checkChange() });
});
答案 2 :(得分:1)
您可以在某个隐藏字段中保存页面加载的值。
喜欢
$(document).ready(function(){
$('hiddenFieldId').val($('selectBoxId').val());
then on change you can grab the value of select:
});
$('selectBoxId').change(function(){
var valChng = $(this).val();
// now match the value with hidden field
if(valChng == $('hiddenFieldId').val()){
}
});
答案 3 :(得分:1)
首先,您需要存储所选选项的先前值,然后您应检查新选择的值是否与存储值不同。
查看sample!
$(document).ready(function() {
var lastValue, selectedValue;
$('#select').change(function() {
selectedValue = $(this).find(':selected').val();
if(selectedValue == lastValue) {
alert('the value is the same');
}
else {
alert('the value has changed');
lastValue = selectedValue;
}
});
});
答案 4 :(得分:0)
$("select").change(function () {
var str = "";
$("select option:selected").each(function () {
str += $(this).text() + " ";
});
$("div").text(str);
})
.change();