Ajax返回的HTML包括一个表和一个提交按钮(type = button)
该表包含克隆表行的jQuery例程(每行允许选择/上传一个文件,并且有两个值:<input type="text">
用于文档标题,以及<input type="file">
。
<table id="MyTable">
<tr name="tr3" id="tr3">
<td>
<input type="text" name="dt[]" id="dt1">
</td>
<td>
<input type="file" name="fff[]" id="ff1">
</td>
</tr>
</table>
<input type="button" name="sub1" id="sub1" value="Submit" onclick="checkform();">
提交表单后,我必须检查每个文档标题是否已填写,因此提交按钮会调用javascript例程:
function checkform()
{
if(document.updateprojectdocs.dt[0].value=='')
{
alert("Fields marked with an asterisk are required.");
document.updateprojectdocs.dt[0].focus();
return;
}
document.getElementById("TheForm").submit();
}
当然,这不起作用(脚本在表单提交之前死亡 - 但如果我删除了前面的if结构则提交)。谁能告诉我为什么以及如何解决?
此外,还会有一个不确定数量的dt[]
字段需要检查。我怎么能构建一个循环来做到这一点?我怀疑jQuery的.find()。each()可以使用,但不确定它会是什么样的?
更新
感谢DaHaKa的回复,我更接近解决方案。我将DaHaKa的建议代码修改为jQuery。
我在与DaHaKa交流方面遇到了麻烦 - 出于某种原因,他的回复在他发布之后很长很久没有出现(问题可能就在我身上)。在我等待(几个小时)的时候,我在另一个问题中发布了部分问题并最终解决了问题。另一个问题发展到了FULL CORRECT ANSWER,我指导未来的观众。请注意,用户thecodeparadox
已创建a working JSFiddle of the full solution。
我已将这个问题授予DaHaKa,因为他非常愿意并且能够提供帮助,但是干预了问题。再次感谢,D。
答案 0 :(得分:1)
在这种情况下jQuery的每个函数都不是必需的,你可以这么简单地做这个=&gt;
试
<table id="MyTable">
<tr name="tr3" id="tr3">
<td>
<input type="text" name="dt" id="dt1">
</td>
<td>
<input type="file" name="fff" id="ff1">
</td>
</tr>
</table>
<input type="button" name="sub1" id="sub1" value="Submit">
的JavaScript
document.getElementById("sub1").onclick = function(){
if (document.getElementById("dt1").value!=""){
document.getElementById("TheForm").submit();
} else {
alert("Empty Field(s) !");
}
};
您应该在html代码的JavaScript中使用ids
,而不是NAME
代码
关于你的文件输入是什么,你可以从你的服务器端脚本语言如php了解它,具有超全局变量$_FILES['file']['error']
类型