0

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 沟通时遇到了问题——由于某种原因,他的回复直到他发布了很久很久很久之后才出现(问题可能出在我这边)。当我等待(几个小时)时,我在另一个问题中发布了部分问题并最终在那里解决了它。另一个问题变成了完全正确的答案,我将未来的观众引导到那里。请注意,用户thecodeparadox创建了完整解决方案的工作 JSFiddle

我把这个问题交给了 DaHaKa,因为他非常愿意并且能够提供帮助,但通信问题介入了。再次感谢,D。

4

1 回答 1

1

在这种情况下,jQuery 每个函数都不是必需的,你可以像这样简单地做到这一点 =>

尝试

<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) !");
    }
};

你应该ids在 html 标签中使用 JavaScript,而不是NAME标签

至于你的文件输入,你可以从你的服务器端脚本语言(如php)中理解它,具有超级全局变量$_FILES['file']['error']类型

于 2012-09-14T17:10:26.977 回答