Javascript 根据输入键上的下拉更改,应完成某些功能

Javascript 根据输入键上的下拉更改,应完成某些功能,javascript,jquery,html,Javascript,Jquery,Html,有一个下拉列表和输入框。如果在下拉列表中选择了Aadhar,我将为输入框指定只接受数字的按键事件。对于PASSPORT,我正在更改使用字母数字字符的按键事件 函数更改文档类型(pthis){ //下拉式更改 var htmlid=“#”+pthis.id; var doctype=$(htmlid+':selected').val(); populateValidations(doctype,“docId”); } 函数populateValidations(doctype,inputId){

有一个下拉列表和输入框。如果在下拉列表中选择了Aadhar,我将为输入框指定只接受数字的按键事件。对于PASSPORT,我正在更改使用字母数字字符的按键事件

函数更改文档类型(pthis){
//下拉式更改
var htmlid=“#”+pthis.id;
var doctype=$(htmlid+':selected').val();
populateValidations(doctype,“docId”);
}
函数populateValidations(doctype,inputId){
$(“#”+inputId).removeAttr(“onkeydown”);
$(“#”+inputId).removeClass(“onlyNumeric”);
$(“#”+inputId).removeClass(“字母数字”);
如果(doctype==“1”){
//阿达尔
$(“#”+inputId).addClass(“onlyNumeric”);
$(“#”+inputId.attr(“onkeydown”,“returninputonlynumberTablet(this,event,12)”);
}
如果(doctype==“2”){
//护照
$(“#”+inputId).addClass(“字母数字”);
$(“#”+inputId.attr(“onkeydown”,“returninputonlyaphanumericTablet(这个,事件,10)”);
}
}
函数inputonlyaphanumericTablet(pthis,event,length){
$('.alphabetNumeric')。on('input',函数(事件){

如果(pthis.value.length在绑定新的监听器之前必须删除另一个监听器,那么每次执行下拉操作时都会得到多个监听器

仅从元素中删除属性不会解除事件绑定。

这不是一个完整的复制/粘贴答案。这是一个示例,您可以根据自己的需要对其进行调整。我刚刚从您的代码中选取了分配侦听器的部分,并对其进行了更改

function populateValidations(doctype,inputId){
    var inp = $("#"+inputId); // get this once. Easier if there is a name change etc
    inp.unbind('keydown'); // unbind any keydown event that may exist
    inp.removeClass("onlyNumeric");
    inp.removeClass("alphabetNumeric");
    if(doctype === "1"){
         //aadhar
         inp.addClass("onlyNumeric");
         // add your keydown
         inp.keydown(function(){ return inputOnlyNumberTablet(this,event,12);});
    }

    if(doctype === "2") {
        //passport   
        inp.addClass("alphabetNumeric");
        inp.keydown(function(){return inputOnlyAlphaNumericTablet(this,event,10);});
    }
}

在绑定新的监听器之前,必须删除另一个按键监听器。每次执行下拉操作时,都会得到多个监听器

仅从元素中删除属性不会解除事件绑定。

这不是一个完整的复制/粘贴答案。这是一个示例,您可以根据自己的需要对其进行调整。我刚刚从您的代码中选取了分配侦听器的部分,并对其进行了更改

function populateValidations(doctype,inputId){
    var inp = $("#"+inputId); // get this once. Easier if there is a name change etc
    inp.unbind('keydown'); // unbind any keydown event that may exist
    inp.removeClass("onlyNumeric");
    inp.removeClass("alphabetNumeric");
    if(doctype === "1"){
         //aadhar
         inp.addClass("onlyNumeric");
         // add your keydown
         inp.keydown(function(){ return inputOnlyNumberTablet(this,event,12);});
    }

    if(doctype === "2") {
        //passport   
        inp.addClass("alphabetNumeric");
        inp.keydown(function(){return inputOnlyAlphaNumericTablet(this,event,10);});
    }
}

您可以使用单个验证函数,只需更改选项更改时要使用的模式。您可以使用单个验证函数,只需更改选项更改时要使用的模式。