Javascript文档.getElementById().value='';已执行字段,但未生效
我正在尝试制作一个按钮来清除旁边的输入。到目前为止,我的代码是这样的Javascript文档.getElementById().value='';已执行字段,但未生效,javascript,jquery,forms,file-io,Javascript,Jquery,Forms,File Io,我正在尝试制作一个按钮来清除旁边的输入。到目前为止,我的代码是这样的 <input type="file" name="lay4img1" id="lay4img1"> <a href="javascript:;" onclick=" if(document.getElementById('lay4img1').value != '') { document.getElementById('lay4img1').value = '';
<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也会执行,但字段仍然不是空的?我的代码出了什么问题
除了<代码> <代码>之外,我还有其他字段,所以我不想,不能使用<代码> <代码>,因为它将清除整个窗体,我认为这不是用户友好的。
< P>这是绑定处理程序的一种可怕方式。此外,用锚点包装按钮完全没有意义。考虑使用JS添加事件侦听器。此侦听器删除旧输入,并将其替换为新输入:
HTML:
下面是一个演示:如果输入字段是如下所示的同级字段。。。您可以使用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>
清楚的
适合我。这对meMe来说也很好。。。你用的是哪种浏览器?是的,为我工作你的浏览器是什么?真的吗??我在Ubuntu 12.04上使用Opera 12.02。奇怪,它在这里不起作用。嗯,那我试试另一个浏览器。对不起,我对Javascript和web编程不熟悉。我能知道为什么这被认为是一种可怕的方式吗?也可以将值传递给clickhandler,我指的是document.getElementById('mybutton').addEventListener(clickhandler(value));,否?addEventListener
在IE8-中不受支持,IE8-是比Opera更流行的浏览器(不幸的是)。@tenoukishi您的javascript最好与标记分离。这样可以更容易地维护JS和HTML,并且不会不必要地扰乱HTML文件。@TendouKishi还为安全问题添加了一个修复程序抱歉,但我不能使用button type=“reset”,因为它会重置整个表单。我需要“清除”按钮来清除输入type=“file”,不想清除整个表单,因为用户重新输入所有内容会很烦人。@tenoukishi实际上你不需要发布完整表单。。。告诉我,两个输入字段都在标记内。。。他们是兄弟姐妹吗。。。??
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);
}
<form>
<input type="file" name="lay4img1" id="lay4img1">
<button type="button" onClick="this.parentNode.getElementsByName('lay4img1')[0].value=new Array();">Clear</button>
</form>