gpt4 book ai didi

javascript - 用以前保存的元素替换元素(选择框)

转载 作者:行者123 更新时间:2023-11-29 14:46:09 26 4
gpt4 key购买 nike

如果选择了一个选项,我有一些 javascript 可以将选择框更改为文本框,然后如果用户点击删除/退格键以清除文本框,则将该文本框更改回选择框。

http://jsfiddle.net/5e1stz46/6/

<select id='visit'>
<option value='1'>option1</option>
<option value='2'>option2</option>
<option value='3'>option3</option>
<option value='Other'>Other</option>
</select>

$('#visit').on('change', function () {
if ((this.value) == 'Other') {
tmp = this;
$(this).replaceWith($('<input/>',{'type':'text','id':'visit'}));
}
});

$(document).keyup(function(e){
if( $('#visit').length ) {
if($('#visit').is(":focus") && $("#visit").val().length == 0){
$("#visit").replaceWith(tmp);
}
}
});

$('#visit').keyup(function(e){
if(e.keyCode == 46 || e.keyCode == 8) {
alert('box now empty');
}
});

当文本框变回选择框时,它所有的事件似乎都丢失了。

Should I be somehow reading the event listeners when the select box comes back or should I be saving the select box differently to start with?

最佳答案

事件已被删除,因为您要从 DOM 中删除关联的 Html 元素。您可以同时拥有 selectinput 并使用 .hide().show 来可视化正确的元素并且事件会正常进行。


另一种方法是使用 event delegation .

更改的 HTML:

<div id="wrapper">
<select id='visit'>
<option value='1'>option1</option>
<option value='2'>option2</option>
<option value='3'>option3</option>
<option value='Other'>Other</option>
</select>
</div>

更改的 JavaScript:

$('#wrapper').on('change', '#visit', function () {
if ((this.value) == 'Other') {
tmp = this;
$(this).replaceWith($('<input/>',{'type':'text','id':'visit'}));
}
});

[ ... ]

其余代码保持不变。这是更新的 JsFiddle Demo .

关于javascript - 用以前保存的元素替换元素(选择框),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32617114/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com