我在运行javascript时遇到了问题,因为它已经兑现。
示例
//Init onClick event
$(document).on('click', '.select', function(){
//Check if select has value
if( $(this).val() ){
console.log( $(this).val() )
} else {
console.log('no value')
$(this).on('change', function(){
console.log('Changed!')
}
}
}问题
现在考虑一下我有一个选择。从开始,该值为空,该选项被禁用。第一次单击select时,控制台将记录“无值”。
单击并将选项/值更改为列表中的内容。
第二次单击select时,会选择一个选项,并且它有一个值。控制台现在将记录“值”,但也会记录“已更改”。
我想这是因为我以前运行了else语句,onChange函数在我的浏览器或类似的东西中兑现了.
我怎样才能防止这种事发生..。或者我应该如何编写代码呢?
我需要检查是否从一开始就选择了一个值。我需要使用onChange函数.
更新
单击select时,我想知道select是否有选定的值。(要知道是更改/编辑值还是第一次选择值),这就是为什么我有一个onClick函数。在这里,我检查价值。
在您单击并检查了该值之后,我希望触发一个onChange函数。这将用于编辑路径..。或者新路线..。
发布于 2016-11-21 09:53:54
您应该只在select上添加"change“事件。对select元素的操作必须根据它的状态更改W.r.tIt的选项来完成
var pervious;
//Init onClick event
$(document).on('focus','.select', function () {
// Store the current value on focus and on change
previous = this.value;
}).
on('change', '.select', function(){
//Check if select has value
if( $(this).val() ){
console.log( $(this).val() );
previous = this.value;
}
else{
console.log('no value')
// YOUR choice, reset it i.e. previous = null;
}
});发布于 2016-11-21 10:16:44
我在代码中看到的主要问题是,您将change侦听器绑定到click侦听器中,因此每次您click绑定另一个change事件时,都会给您带来一个已兑现的onchange函数的概念。将您的更改函数移到单击之外,正确地委派它。类似于:
$(document).on('click', '.select', function(){
//Check if select has value
if( $(this).val() ){
console.log( $(this).val() )
} else {
console.log('no value')
}
})
$(document).on('change', '.select', function(){
console.log('Changed!')
})https://stackoverflow.com/questions/40717222
复制相似问题