我将如何以及在哪里将这两个变量组合在 JavaScript 中?

Posted

技术标签:

【中文标题】我将如何以及在哪里将这两个变量组合在 JavaScript 中?【英文标题】:How and where would I combine these two variable in JavaScript? 【发布时间】:2019-02-19 15:15:56 【问题描述】:

我将这段代码拼凑在一起,链接到此 PDF 中的操作按钮。它应该验证是否输入了所有必填字段,如果是,它将从文档中提取姓名和员工编号,并生成附有 PDF 的电子邮件。如果它未能通过这些检查,则会弹出一个警告用户丢失信息的窗口。

我遇到的问题是,当代码运行时,您可以绕过警告并仍然通过电子邮件发送文档。

如何调整它以停止直到所有字段都被回答?

所需的“伪代码”: 检查空字段(获取经理的姓名)(获取经理的 EE 编号)。如果必填字段(复选框)和 cmets 为空,则提醒用户。 如果不错,请从这些区域构建电子邮件主题行和文本...

代码如下:

var emptyFields = [];

for (var i = 0; i < this.numFields; i++) 
    var f = this.getField(this.getNthFieldName(i));

    if (f.type != "button" && f.required) 
        if ((f.type == "text" && f.value == "") || (f.type == "checkbox" && f.value == "Off")) emptyFields.push(f.name);
    


if (emptyFields.length > 0) 
    app.alert("Error! This checklist is incomplete:\n" + emptyFields.join("\n"));


// Build the subject line text from several fields form fields
var subj_text = getField("Weekly Management Critical Items:").valueAsString;
subj_text += ": " + getField("Manager Name").value;
subj_text += "- " + getField("Manager EE#").valueAsString;

// Send the email
mailDoc(
    cTo: "dennis.aikens@fedex.com",

    cSubject: subj_text,

    cMsg: "Hey Dennis, here's my checklist for this week. \r" + "Let me know if you have any questions. Thank you."
);

我知道它有点长,所以感谢您阅读。

感谢您的所有时间和投入!

【问题讨论】:

这是伪代码还是你真的没有流控制语句来阻止mailDoc函数被调用,即使emptyFields.length &gt; 0?换句话说,如果将所有代码放在else 子句中的警报if 语句下方会发生什么? 如果所有这些代码都包含在一个函数中,那么在if (emptyFields.length &gt; 0)之后的块中,只需键入return; 尝试添加else /* code block that should not always be executed */ 或者您在 javascript 验证结束时使用 return false; / return true; 设置条件,然后根据清单运行到此处或此处 - 或者您清理 html 表单的 @ 987654331@方法并在满足要求后通过javascript发布。 -尼克,是的,第一部分是伪代码;或者至少我理解它是什么。我没有流量控制语句,也不知道该放在哪里。 【参考方案1】:

你应该写下干净的控制流代码... 现在你可以使用它了

var emptyFields = [];

for (var i = 0; i < this.numFields; i++) 
    var f = this.getField(this.getNthFieldName(i));

    if (f.type != "button" && f.required) 
        if ((f.type == "text" && f.value == "") || (f.type == "checkbox" && f.value == "Off")) emptyFields.push(f.name);
    


if (emptyFields.length > 0) 
    app.alert("Error! This checklist is incomplete:\n" + emptyFields.join("\n"));
else
sendMail();



var sendMail = function()
// Build the subject line text from several fields form fields
var subj_text = getField("Weekly Management Critical Items:").valueAsString;
subj_text += ": " + getField("Manager Name").value;
subj_text += "- " + getField("Manager EE#").valueAsString;

// Send the email
mailDoc(
    cTo: "dennis.aikens@fedex.com",

    cSubject: subj_text,

    cMsg: "Hey Dennis, here's my checklist for this week. \r" + "Let me know if you have any questions. Thank you."
);
 

【讨论】:

以上是关于我将如何以及在哪里将这两个变量组合在 JavaScript 中?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5 - 我应该在哪里编写这个函数,以及如何编写?

如何组合两个没有裂缝的正弦波[关闭]

中止 ASRA。如何处理这个

Lambda 表达式以及如何组合它们?

在哪里放置组合组件?(JSF 2.0)

在两个微服务之间交流“用户”模型