onchange 不在 IE 上运行,但在 Chrome 和 FF 上完美触发
onchange not working on IE but firing perfectly on Chrome and FF
我遇到了 onchange
事件的问题。它在 Chrome 和 FF 上工作得很好,但在 IE 上不行。这是代码:
<div class="panel-body panel-default upload">
<div class="form-group upload">
{!! Form::open(array('url'=>'scriptUpload/upload','method'=>'POST', 'files'=>true, 'class' => 'fluid ui action labeled input')) !!}
<label for="project" class="col-sm-6 control-label">Elementary script</label>
<div class="control-group">
<div class="controls input">
<input id="files" type="text" class="input upload" readonly>
<label class="col-sm-5">
<span class="btn btn-primary upload">
Browse… <input name='elementaryScript[]' id='elementaryScriptId' type="file" style="display: none;" multiple onchange="isUploadPossible(this)">
</span>
</label>
</div>
</div>
<div id="success">
{!! Form::button('Upload', array('id' => 'submitButton', 'class'=>'btn btn-primary upload', 'onClick' => 'fileExists()', 'disabled'=>'true')) !!}
{!! Form::close() !!}
</div>
</div>
</div>
这是调用的 JS 函数:
function isUploadPossible(elem) {
if (elem.value == "")
elem.getRootNode().getElementsByTagName('button').submitButton.disabled = true;
else
elem.getRootNode().getElementsByTagName('button').submitButton.disabled = false;
}
所以基本上,当用户选择文件时,应该将上传按钮的disabled
属性设置为false
。
我在这里和那里看到它应该更改为 onclick
但我不能,因为它必须在用户选择要上传的文件后触发并且 onclick
会之前被解雇。
编辑:我实际上碰巧遇到了这个错误:
Object doesn't support property or method 'getRootNode'
好的,到目前为止 getRootNode
似乎只是 supported by Chrome and Opera。
找到了一种(非常)肮脏的方法,但它适用于 IE,Chrome 和 FF:
elem.parentElement.parentElement.parentElement.parentElement.parentElement.getElementsByTagName('button').submitButton;
我遇到了 onchange
事件的问题。它在 Chrome 和 FF 上工作得很好,但在 IE 上不行。这是代码:
<div class="panel-body panel-default upload">
<div class="form-group upload">
{!! Form::open(array('url'=>'scriptUpload/upload','method'=>'POST', 'files'=>true, 'class' => 'fluid ui action labeled input')) !!}
<label for="project" class="col-sm-6 control-label">Elementary script</label>
<div class="control-group">
<div class="controls input">
<input id="files" type="text" class="input upload" readonly>
<label class="col-sm-5">
<span class="btn btn-primary upload">
Browse… <input name='elementaryScript[]' id='elementaryScriptId' type="file" style="display: none;" multiple onchange="isUploadPossible(this)">
</span>
</label>
</div>
</div>
<div id="success">
{!! Form::button('Upload', array('id' => 'submitButton', 'class'=>'btn btn-primary upload', 'onClick' => 'fileExists()', 'disabled'=>'true')) !!}
{!! Form::close() !!}
</div>
</div>
</div>
这是调用的 JS 函数:
function isUploadPossible(elem) {
if (elem.value == "")
elem.getRootNode().getElementsByTagName('button').submitButton.disabled = true;
else
elem.getRootNode().getElementsByTagName('button').submitButton.disabled = false;
}
所以基本上,当用户选择文件时,应该将上传按钮的disabled
属性设置为false
。
我在这里和那里看到它应该更改为 onclick
但我不能,因为它必须在用户选择要上传的文件后触发并且 onclick
会之前被解雇。
编辑:我实际上碰巧遇到了这个错误:
Object doesn't support property or method 'getRootNode'
好的,到目前为止 getRootNode
似乎只是 supported by Chrome and Opera。
找到了一种(非常)肮脏的方法,但它适用于 IE,Chrome 和 FF:
elem.parentElement.parentElement.parentElement.parentElement.parentElement.getElementsByTagName('button').submitButton;