Javascript 禁用文本框更改事件

Javascript 禁用文本框更改事件,javascript,jquery,Javascript,Jquery,简短解释 每当禁用的文本框值更改时,我都想做一些事情 详细说明 我有一个禁用的文本框,它的值是通过编程设置的。我想绑定禁用的文本框的更改事件来触发其他一些函数。这是我尝试过的,但不起作用 $('#Rate').change(function() { // alert("Change Event Called"); CalculateMedicine(); }); $('input[id$=Rate]').bind("change",

简短解释

每当禁用的文本框值更改时,我都想做一些事情

详细说明

我有一个禁用的文本框,它的值是通过编程设置的。我想绑定禁用的文本框的更改事件来触发其他一些函数。这是我尝试过的,但不起作用

$('#Rate').change(function() {
           // alert("Change Event Called");
            CalculateMedicine();
        });

$('input[id$=Rate]').bind("change", function () {
            CalculateMedicine();
        });

这两件事对我都不起作用,而且我不喜欢将函数
CalculateMedicine()
放在所有可能
Rate
文本框正在更改的地方。因此,除了此解决方案之外,如果您以编程方式更改值,
change
事件将不会触发

不优雅的可能的解决方案:

function checkChanges(){
    if(prevRate != $('#Rate').val()){
        prevRate = $('#Rate').val();
        alert('changed');
    }
}

var prevRate;
$(document).ready(function(){
    prevRate = $('#Rate').val();
    setInterval(function(){
        checkChanges();
    } ,500);
});

如果以编程方式更改值,
change
事件将不会触发

不优雅的可能的解决方案:

function checkChanges(){
    if(prevRate != $('#Rate').val()){
        prevRate = $('#Rate').val();
        alert('changed');
    }
}

var prevRate;
$(document).ready(function(){
    prevRate = $('#Rate').val();
    setInterval(function(){
        checkChanges();
    } ,500);
});

您可以对更改事件使用
触发器

<input type="text" disabled="disabled" name="fname" class="myTextBox" ><br>
<input type="button" name="submit" id="submit" value="Submit">        

选中

您可以对更改事件使用
触发器

<input type="text" disabled="disabled" name="fname" class="myTextBox" ><br>
<input type="button" name="submit" id="submit" value="Submit">        

检查

假设您的输入在单击时禁用了类或其他类似的检查

 if ($( "#input" ).hasClass( "disable" )) {
Your logics and codes here //


}

//希望这将有助于

假设您的输入在单击时禁用了类或其他类似的检查

 if ($( "#input" ).hasClass( "disable" )) {
Your logics and codes here //


}

//希望这会有所帮助

如果重新定义输入的value属性,这是可能的

<html>
    <head>
        <script>
            function Init(){
                var tE = document.querySelector('input'); //Our input field.

                //We redefine the value property for the input
                tE._value = tE.value;
                Object.defineProperty(tE, 'value', {
                    get: function(){return this._value},
                    set: function(v){
console.log(1, 'The value changed to ' + v)
                        this._value = v;
                        this.setAttribute('value', v) //We set the attribute for display and dom reasons
                        //Here we can trigger our code
                    }
                })
            }

            function Test(){
                //In one second we are going to change the value of the input
                window.setTimeout(function(){
                    var tE = document.querySelector('input'); //Our input field.
                    tE.value = 'Changed!'
console.log(0, 'Changed the value for input to ' + tE.value)
                }, 1000)
            }
        </script>
    </head>

    <body onload = 'Init(); Test();'>
        <input type = 'text' disabled = 'true' value = 'Initial' />
    </body>
</html>

函数Init(){
var tE=document.querySelector('input');//我们的输入字段。
//我们重新定义输入的value属性
tE._值=tE.值;
Object.defineProperty(tE,'值'{
get:function(){返回此值。_值},
设置:功能(v){
console.log(1,'值更改为'+v)
这是._值=v;
this.setAttribute('value',v)//出于显示和dom的原因,我们设置了该属性
//在这里我们可以触发我们的代码
}
})
}
功能测试(){
//在一秒钟内,我们将更改输入的值
setTimeout(函数(){
var tE=document.querySelector('input');//我们的输入字段。
tE.value='Changed!'
console.log(0,'将输入值更改为'+tE.value)
}, 1000)
}

如果重新定义该输入的value属性,则是可能的

<html>
    <head>
        <script>
            function Init(){
                var tE = document.querySelector('input'); //Our input field.

                //We redefine the value property for the input
                tE._value = tE.value;
                Object.defineProperty(tE, 'value', {
                    get: function(){return this._value},
                    set: function(v){
console.log(1, 'The value changed to ' + v)
                        this._value = v;
                        this.setAttribute('value', v) //We set the attribute for display and dom reasons
                        //Here we can trigger our code
                    }
                })
            }

            function Test(){
                //In one second we are going to change the value of the input
                window.setTimeout(function(){
                    var tE = document.querySelector('input'); //Our input field.
                    tE.value = 'Changed!'
console.log(0, 'Changed the value for input to ' + tE.value)
                }, 1000)
            }
        </script>
    </head>

    <body onload = 'Init(); Test();'>
        <input type = 'text' disabled = 'true' value = 'Initial' />
    </body>
</html>

函数Init(){
var tE=document.querySelector('input');//我们的输入字段。
//我们重新定义输入的value属性
tE._值=tE.值;
Object.defineProperty(tE,'值'{
get:function(){返回此值。_值},
设置:功能(v){
console.log(1,'值更改为'+v)
这是._值=v;
this.setAttribute('value',v)//出于显示和dom的原因,我们设置了该属性
//在这里我们可以触发我们的代码
}
})
}
功能测试(){
//在一秒钟内,我们将更改输入的值
setTimeout(函数(){
var tE=document.querySelector('input');//我们的输入字段。
tE.value='Changed!'
console.log(0,'将输入值更改为'+tE.value)
}, 1000)
}

您可以通过以下代码从任何要触发更改事件或任何其他事件的位置触发更改事件。事件将被触发,无论值是否更改。只需将代码放在通过编程更改值的位置之后

element.dispatchEvent(new Event('change'))
let input=document.querySelector(“输入”);
input.addEventListener(“更改”,()=>警报(“触发更改事件”);
input.value=“xyz”;
输入。dispatchEvent(新事件(“变更”))

您可以通过以下代码从任何要触发更改事件或任何其他事件的位置触发更改事件。事件将被触发,无论值是否更改。只需将代码放在通过编程更改值的位置之后

element.dispatchEvent(new Event('change'))
let input=document.querySelector(“输入”);
input.addEventListener(“更改”,()=>警报(“触发更改事件”);
input.value=“xyz”;
输入。dispatchEvent(新事件(“变更”))

你能更清楚地解释一下你想做什么吗?简言之,我想在禁用的文本框值为cahange时调用一个函数或做一些事情@ujwaldhakalth现在清楚了吗@ujwaldhakalth然后检查该复选框的值如果禁用到你的操作,我想你添加了一些禁用类,那么检查该类如果发现禁用,请调用一些功能不是它的副本,他正在尝试启用禁用文本框点击事件在我的情况下,不会有任何点击事件。只有disabled textbox的更改事件,你能更清楚地解释一下你想做什么吗?简而言之,我想在disabled textbox的值为CAhange时调用函数或做点什么@ujwaldhakalth现在清楚了吗@ujwaldhakalth然后检查复选框的值,如果禁用到你的操作中,我想你添加了一些禁用类,那么检查类是否类禁用被发现调用某些函数不是它的副本他正在尝试启用禁用文本框单击事件在我的情况下不会有任何单击事件。只有禁用的textboxUsing触发器的更改事件,它仅在页面加载时激发而不是在textbox值上change@Snehal我不是建议使用trigger()。我已经更新了我的答案,看看是否要使用触发器,它只在页面加载时激发,而不是在文本框值上change@Snehal我不是建议使用trigger()。我已经更新了我的答案,如果你想看一下,这是类似的