メインコンテンツまでスキップ

フォームにカスタム日付を実装するオプション区間

1. 使用シーン

カスタム検証関数またはjsapiを使用すると、複雑なカスタム日付オプション区間を実現できます。この例では、カスタム日付オプション区間を実現する方法を学習します。

2. 機能を実現する

2.1. フォーム設定

2.2. カスタム日付オプション区間関数の設定

次の関数をページjsにコピーします。

/**
* 可选日期为前(后) n 天含(不含)今天
* @param current:monentObj
* @param dayNum:Number 多少天
* @param isBefore:Boolean 前(后)多少天,true(前),false(后)
* @param isIncludeToday:Boolean 是否包含今天,true(包含),false(不包含)
*/
export function canSelectDateBeforeOrAfterAnyDays(current, dayNum, isBefore = true, isIncludeToday = true) {
if (isBefore) {
return current < (isIncludeToday ? Date.now() - 24 * 3600 * 1000 * dayNum
: Date.now() - 24 * 3600 * 1000 * (+dayNum + 1))
|| current > (isIncludeToday ? Date.now() : Date.now() - 24 * 3600 * 1000);
}
return current < (isIncludeToday ? Date.now() - 24 * 3600 * 1000 : Date.now())
|| current > Date.now() + 24 * 3600 * 1000 * (isIncludeToday ? (dayNum - 1) : dayNum);
}

/**
* 可选日期为周 n
* @param current:monentObj
* @param weekNumList:Array[Number] 可选的日期周数,不传默认均可选,周一 - 周六(1 - 6),周日(0)
*/
export function canSelectDateOfAnyWeek(current, weekNumList = []) {
return weekNumList.length ? !weekNumList.includes( new Date(current).getDay()) : false;
}

2.3. 日付コンポーネントで使用

// 可选日期为前14天(含今天)
export function disabledDateOne(current) {
return this.canSelectDateBeforeOrAfterAnyDays(current, 14, true, true);
}

// 可选日期为前14天(不含今天)
export function disabledDateTwo(current) {
return this.canSelectDateBeforeOrAfterAnyDays(current, 14, true, false);
}

// 可选日期为后14天(含今天)
export function disabledDateThree(current) {
return this.canSelectDateBeforeOrAfterAnyDays(current, 14, false, true);
}

// 可选日期为后14天(不含今天)
export function disabledDateFour(current) {
return this.canSelectDateBeforeOrAfterAnyDays(current, 14, false, false);
}

// 可选日期为周一、周三或周日
export function disabledDateFive(current) {
return this.canSelectDateOfAnyWeek(current, [1, 3, 0]);
}

// 可选日期为前14天(含今天)且日期为周一、周三或周日
export function disabledDateSix(current) {
return this.canSelectDateBeforeOrAfterAnyDays(current, 14, true, true)
|| this.canSelectDateOfAnyWeek(current, [1, 3, 0]);
}

// 可选日期为后14天(含今天)且日期为周一、周三或周日
export function disabledDateSeven(current) {
return this.canSelectDateBeforeOrAfterAnyDays(current, 14, false, true)
|| this.canSelectDateOfAnyWeek(current, [1, 3, 0]);
}

3. 効果を実現する

3.1. オプションの日付は14日前 (今日を含む) です

3.2. オプションの日付は14日前です (今日を除く)

3.3. オプションの日付は後14日 (今日を含む) で、日付は月曜日、水曜日、日曜日です

4.オンラインで試してみます

この文書は機械翻訳により生成されています。翻訳により生じた齟齬や相違点は拘束力を持たず、コンプライアンスや執行目的において法的効力はありません。
© DingTalk (Singapore) Private Limited