我正在尝试按下按钮来清除旁边的输入。到目前为止,我的代码就像这样,
<input type="file" name="lay4img1" id="lay4img1">
<a href="javascript:;"
onclick="
if(document.getElementById('lay4img1').value != '') {
document.getElementById('lay4img1').value = '';
alert('clear success');
} else {
alert('failed');
}">
<input type="button" value="Clear">
</a>
当我选择文件并使lay4img1
具有值,然后按下按钮时,会执行警告clear success
,因此document.getElementById
也会执行,但该字段仍然不为空?我的代码出了什么问题?
除了<input type="file" name="lay4img1" id="lay4img1">
之外,我还有其他字段,所以我不想要,也不能使用<button type="reset">
因为它会清除整个表单,我认为这不是用户友好的。
答案 0 :(得分:1)
这是绑定处理程序的可怕方式。另外,用锚点包裹一个按钮是完全没有意义的。考虑使用JS添加事件侦听器。此侦听器删除旧输入并将其替换为新输入:
HTML:
<input id="mybutton" type="button" value="Clear">
JS:
function clickhandler(){
var input = document.getElementById('lay4img1');
var replacement = document.createElement('input');
replacement.type = "file";
replacement.id = 'lay4img1';
replacement.name = 'lay4img1';
if(input.value != '') {
input.parentElement.replaceChild(replacement, input);
alert('clear success');
} else {
alert('failed');
}
}
var button = document.getElementById('mybutton');
if (!button.addEventListener) {
button.attachEvent("onclick", clickhandler);
}
else {
button.addEventListener("click", clickhandler, false);
}
答案 1 :(得分:1)
如果输入字段是下面的兄弟...你可以尝试使用onClick
属性的这个javascript代码......
<form>
<input type="file" name="lay4img1" id="lay4img1">
<button type="button" onClick="this.parentNode.getElementsByName('lay4img1')[0].value=new Array();">Clear</button>
</form>