Javascript 触发器值更改时的DOM操作

Javascript 触发器值更改时的DOM操作,javascript,jquery,html,jquery-ui,jquery-events,Javascript,Jquery,Html,Jquery Ui,Jquery Events,进行此类操纵的最佳方法是什么: 当使用组合框的触发器为change时,我想更改以前添加到表单中的文本字段的类型 我的样本数据收集: function DataProvide(){ selectValues = { "choose" : "-Choose-", "id" : "ID", "emp_name" : "Employee Name", "photo_path" :

进行此类操纵的最佳方法是什么:

当使用组合框的触发器为change时,我想更改以前添加到表单中的文本字段的类型

我的样本数据收集

function DataProvide(){
    selectValues = { 
        "choose"        : "-Choose-",
        "id"            : "ID",
        "emp_name"      : "Employee Name",
        "photo_path"    : "Photo Path",
        "emp_id"        : "Employee ID",
        "start_date"    : "Start Date",
        "birth_date"    : "Birth Date"
    };

    $.each(selectValues, function(key, value) {   
         $('#data1_1')
             .append($("<option></option>")
             .attr("value",key)
             .text(value)); 
    }); 
}

$(document).ready(function() {
     DataProvide();
});
然后检查组合的值 $(“#customFields”).on('change','tabelBaru',function(){

if(nilai=='gender'){
$this.closest(“tr”).find(“.data3”).replaceWith(
''
+“男人”
+“女人”
+ ''
)
}else if(nilai==“开始日期”){
$this.closest(“tr”).find(“.data3”).replaceWith(
''
)
}
};
但是jQueryUI日期选择器不会像往常一样出现。但是如果正常表单(不使用$.append)都正常运行

我怎么修理它

$(".onlyDate").datepicker({
    dateFormat: "dd-mm-yy"
});
当执行此代码时,它将只找到当前语句的对象,该对象的类名为onlyDate

在此之后,页面上任何类名为onlyDate append的对象都不会执行日期拾取代码


也许您应该尝试jquery函数“delegate”或在每次追加后执行日期选择器代码。

我使用$(“table”)。在(“click”、“.onlyDate”,function(){$(this).datepicker({dateFormat:“dd-mm-yy”});});但每次我在最近第二次更改组合框时都会出现这种情况。我的意思是如果我选择组合框“start\u-date”DateTime不起作用,但如果我选择另一个组合,则会成功显示DatePicker。我遗漏了什么?这是因为该代码将绑定.onlyDate对象上的单击事件。因此,当您第一次完成单击项目时,它最终成为您想要的日期选择器。(在第一次单击之前,它仍然只是一个普通的输入:文本对象)
$(".onlyDate").datepicker({
    dateFormat: "dd-mm-yy"
});
if(nilai=='gender'){
            $this.closest("tr").find(".data3").replaceWith(
                '<select name="data3[]" class="data3">'
                    + '<option value="man" selected >Man</option>'
                    + '<option value="woman">Woman</option>'
                + '</select>'
            )
        }else if(nilai=='start_date'){
            $this.closest("tr").find(".data3").replaceWith(
                '<input type="text" name="data3[]" value="" class="onlyDate"/>'
            )
        }
};
$(".onlyDate").datepicker({
    dateFormat: "dd-mm-yy"
});