我的html中有此代码,我要在其中上传三个文件。除非选择了文件,否则将禁用所有相应文件上传的提交按钮。
$(document).ready(
function() {
$('input:file').change(
function() {
if ($(this).val()) {
$('input:submit').attr('disabled', false);
}
}
);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="#" method="post">
<input type="file" name="fileInput1" id="fileInput1" />
<input type="submit" value="submit" disabled />
</form>
<form action="#" method="post">
<input type="file" name="fileInput2" id="fileInput2" />
<input type="submit" value="submit" disabled />
</form>
<form action="#" method="post">
<input type="file" name="fileInput3" id="fileInput3" />
<input type="submit" value="submit" disabled />
</form>
我担心的是,如果我为第一个表单选择一个文件,那么其他表单中的“提交”按钮也会被启用。
答案 0 :(得分:1)
您需要使用遍历,才能在正确的表单中找到正确的按钮。
$(document).ready(
function(){
$('input:file').change(
function(){
if ($(this).val()) {
$(this).siblings('input[type=submit]').attr('disabled',false);
}
}
);
});
这将仅查找与文件输入同级的输入,这意味着它们在同一父元素(以您的情况为同一格式)内。
答案 1 :(得分:1)
选项1: 无论元素的顺序如何,这都会启用所需的按钮:
$(document).ready(
function(){
$('form input:file').change(
function(){
if ($(this).val()) {
// Select button of this form
$(this).parent('form')
.children('input:submit')
.attr('disabled',false);
}
}
);
});
查看此jsFiddle
选项2::如果“输入提交”始终位于“输入文件”旁边,这将启用它:
$(this).next().attr('disabled',false);
代替此:
$('input:submit').attr('disabled',false);
查看此jsFiddle