我有一个文本框,当发生onchange事件时会动态添加一些元素。由于这个原因,提交按钮的位置会发生改变。如果用户在文本框中输入一些内容并单击按钮,则onclick事件不会触发。我怀疑是因为同时改变了按钮的位置,浏览器认为点击事件发生在页面上而不是按钮上。
有没有办法处理这种情况?我不能将按钮移到运行时添加的元素上面。
我创建了一个样例jsfiddle:http://jsfiddle.net/WV3Q8/3/ HTML:
有没有办法处理这种情况?我不能将按钮移到运行时添加的元素上面。
我创建了一个样例jsfiddle:http://jsfiddle.net/WV3Q8/3/ HTML:
<p>Enter something</p>
<input type="text" id="input" onchange="onChange()">
<div id="log"></div>
<button value="Go" style="display:block" type="button" onclick="submit();" id="btn-submit">Submit</button>
JavaScript:
function onChange(){
var value = $('#input').val();
$('#log').append('<p>New value: ' + value + '</p>');
}
function submit(){
alert('value submitted');
}
编辑1
测试用例(问题涉及第二个测试用例):在所有浏览器中都发生(Chrome,IE 10等):
- 在文本框中输入内容并按Tab键,p元素将被添加并移动按钮的位置。现在点击提交按钮。将弹出警报。
- 在文本框中输入内容并单击提交按钮。p元素被添加,但不会显示警报。
编辑2:由于显而易见的原因(它们在每次按键时触发),我不能使用其他按键事件,例如keyup,keydown或keypress。 setimeout也不可能,因为有一些单选按钮是在文本框的onchange事件上运行时生成的。在向用户显示这些单选按钮之前点击提交按钮是不明智的。
onchange
事件而不是按钮的onclick
事件。 - Bhavik