我在网上搜索了一段时间,但找不到我的问题的简单答案。因此,我有一个具有日期和时间类型的共享点列表,并且创建了一个用于添加新元素的自定义表单。在表单上,我创建了一个 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/