javascript - Sharepoint:如何通过 Javascript/JQuery 从自定义表单上的 DateTimeField 获取日期值?

标签 javascript jquery validation sharepoint datetime

我在网上搜索了一段时间,但找不到我的问题的简单答案。因此,我有一个具有日期和时间类型的共享点列表,并且创建了一个用于添加新元素的自定义表单。在表单上,​​我创建了一个 DateTimeField 就像这样:

<SharePoint:DateTimeField runat="server" id="ff_Order_Asset_DeliveryDate" FieldName="DeliveryDate"  />

一切都很好。现在我想添加一个验证,因为所选日期不能是过去的日期,所以我需要将其与当前日期进行比较。我想使用 PreSaveAction 在 javascript 中执行此操作,但问题是,我不知道如何从控件中获取日期值。我尝试过这样的事情:

var dateSelected = document.getElementById("<%=ff_Order_Asset_DeliveryDate.ClientID%>");
var dateFromSelection = new Date(dateSelected.value);
var dateNow = new Date();
if (dateFromSelection < dateNow)
doSomething();

但这当然行不通。请告诉我我该如何做到这一点?我将不胜感激!

---------------------------------------- 答案 --------------- -----------------------

如果有人关心:似乎我唯一应该做的就是使用这个 jQuery 语法:

var dateSelected = $('input[id*="ff_Order_dFAsset_DeliveryDate"]');

因为正如 Mark Oreta 所说,Sharepoint 为我的控件 ID 添加了很多内容。

最佳答案

您是否反对使用 column validation ?如果是这样,我建议以这种方式进行验证。

如果 javascript 是您唯一的选择,那么它不会像选择文本框那么容易,因为 sharepoint 在生成表单时会向项目的 id 添加一堆数据。根据您发布的内容,您似乎已经提取了表单,因此我要做的就是在 周围包裹一个跨度,以便在 div 内生成输入并以这种方式定位它。

<span id="span-dateselected">
 <SharePoint:DateTimeField runat="server" id="ff_Order_Asset_DeliveryDate" FieldName="DeliveryDate"  />
</span>

然后在您的 JavaScript 中,您需要找到跨度,然后是输入:

var dateFromSelection = document.getElementById("span-dateselected").getElementsByTagName("input")[0].value;

上面的代码片段做出了一些可能好也可能不好的假设,因此您可能想要测试 javascript 是否正确找到输入。我建议使用 Jquery 迭代生成的列表,但我意识到这可能不适合您。

关于javascript - Sharepoint:如何通过 Javascript/JQuery 从自定义表单上的 DateTimeField 获取日期值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11743458/

相关文章:

javascript - 输入元素上的 knockout validation 错误类

javascript - 在属性 unicode 无法正常工作之前引导

javascript - 将超链接应用于整个 DIV 区域?

javascript - 使用js将原始数据转为Array或Json

javascript - 使用 JSON 多标记在 Google map 上进行标记聚类

javascript - 为数组加载更多按钮

regex - 使用 TextInput 的 IP 地址掩码

performance - 出于安全目的,唯一用户 ID 的长度(在 [0..N] 范围内创建)足够长

javascript - slideup 一旦点击 slidedown div

javascript - 将 .html 文件的内容添加/注入(inject)到访问的每个网站 - Chrome 扩展?