如果您想了解EXTJS自定义验证日期选择范围的相关知识,那么本文是一篇不可错过的文章,我们将对excel验证日期合法进行全面详尽的解释,并且为您提供关于Android自定义Dialog,实现性别选择,
如果您想了解EXTJS自定义验证日期选择范围的相关知识,那么本文是一篇不可错过的文章,我们将对excel验证日期合法进行全面详尽的解释,并且为您提供关于Android自定义Dialog,实现性别选择,日期选择,获取EditText内容、AngularJS自定义验证在程序更改模型时不会触发、Ant-design-vue DatePicker 日期选择框时间选择范围限定、EasyUI datebox 日期选择范围的有价值的信息。
本文目录一览:- EXTJS自定义验证日期选择范围(excel验证日期合法)
- Android自定义Dialog,实现性别选择,日期选择,获取EditText内容
- AngularJS自定义验证在程序更改模型时不会触发
- Ant-design-vue DatePicker 日期选择框时间选择范围限定
- EasyUI datebox 日期选择范围
EXTJS自定义验证日期选择范围(excel验证日期合法)
方法一:
//自定义VType类型,验证日期选择范围
Ext.apply(Ext.form.field.VTypes,{
//验证方法
dateRange:function(val,field){
var beginDate=null,//开始日期
beginDateCmp=null,//开始日期组件
endDate=null,//结束日期
endDateCmp=null,//结束日期组件
validStatus=true;//验证状态
if(field.dateRange){
//获取开始时间
if(!Ext.isEmpty(field.dateRange.begin)){
beginDateCmp=Ext.getCmp(field.dateRange.begin);
beginDate=beginDateCmp.getValue();
}
//获取结束时间
if(!Ext.isEmpty(field.dateRange.end)){
endDateCmp=Ext.getCmp(field.dateRange.end);
endDate=endDateCmp.getValue();
}
}
//如果看似是时间或结束时间有一个为空通过验证
if(!Ext.isEmpty(beginDate)&&!Ext.isEmpty(endDate)){
validStatus=beginDate<=endDate;
}
return validStatus;
},
//验证提示信息
dateRangeText:''开始时间不能大于结束时间''
});
//使用:
{
id:''beginDate'',
fieldLabel:''入学开始日期'',
dateRange:{begin:''beginDate'',end:''endDate''},//用于vtype类型dateRange
vtype:''dateRange''
},{
id:''endDate'',
fieldLabel:''入学结束日期'',
dateRange:{begin:''beginDate'',end:''endDate''},//用于vtype类型dateRange
vtype:''dateRange''
}
方法二:
//通过监听器设置datefield最大值最小值
listeners: {
''focus'': function(e){
var endTime=Ext.getCmp(''endTimeId'').getValue();
if(endTime!=''''){
this.setMaxValue(endTime.format(''Y-m-d''));
}
}
}
Android自定义Dialog,实现性别选择,日期选择,获取EditText内容
Android 自定义 Dialog ,实现 性别选择,日期选择和 自定义布局获取EditText内容
Dialog类是对话框的基类,但是应该避免直接实例化Dialog,而是应该尽量使用下列子列之一 :
AlertDialog
此对话框可显示标题、最多三个按钮、可选择项列表或自定义布局。 DatePickerDialog 或 TimePickerDialog
此对话框带有允许用户选择日期或时间的预定义 UI。
------------------------------------------------来自于Google Android Develop 开发手册
日期选择器
这里我们用到了Android原生提供的日期选择器对话框 DatePickerDialog
- 首先你可以先设定一个date,让DatePickerDialog 点击时显示你设定的时间.通常我们都是获取当前date来显示.所以我们要用到calender来获取当前date
Calendar nowdate = Calendar.getInstance();
int mYear = nowdate.get(Calendar.YEAR);
int mMonth = nowdate.get(Calendar.MONTH);
int mDay = nowdate.get(Calendar.DAY_OF_MONTH);
- 然后你可以在按钮 onClick() 点击事件中设置触发 DatePickerDialog
- 传入五个参数 parent context ,监听器,年,月,日
new DatePickerDialog(MainActivity.this, onDateSetListener, mYear, mMonth, mDay).show();
- 设置日期选择器对话框的监听器 , DatePickerDialog.OnDateSetListener
- void onDateSet (DatePicker view, int year, int month, int dayOfMonth)
- 将获取到的date转换成字符串显示到textview
private DatePickerDialog.OnDateSetListener onDateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
int mYear = year;
int mMonth = monthOfYear;
int mDay = dayOfMonth;
TextView date_textview = (TextView) findViewById(R.id.changebirth_textview);
String days;
days = new StringBuffer().append(mYear).append("年").append(mMonth).append("月").append(mDay).append("日").toString();
date_textview.setText(days);
}
};
参考自Google Android Develop DatePickerDialog
性别选择器
- 首先我们要创建一个数组,来提供选择的选项
private String[] sexArry = new String[]{"不告诉你", "女", "男"};// 性别选择
- 设置点击事件后,实现性别选择器的方法 ,这里我们使用了AlertDialog
private void showSexChooseDialog() {
AlertDialog.Builder builder3 = new AlertDialog.Builder(this);// 自定义对话框
builder3.setSingleChoiceItems(sexArry, 0, new DialogInterface.OnClickListener() {// 2默认的选中
@Override
public void onClick(DialogInterface dialog, int which) {// which是被选中的位置
// showToast(which+"");
changesex_textview.setText(sexArry[which]);
dialog.dismiss();// 随便点击一个item消失对话框,不用点击确认取消
}
});
builder3.show();// 让弹出框显示
}
自定义Dialog 布局,获取EditText输入框的数据
- 使用使用LayoutInflater来加载dialog_setname.xml布局
- 初始化AlertDialog,使用setView()方法将自定义View显示到dialog
- 设置AlertDialog的按钮,设置点击事件来 获取EditText输入框的内容,然后设置TextView的内容.
- 布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:id="@+id/changename_edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="32dp"
android:hint="昵称" />
</LinearLayout>
- 自定义Dialog获取输入框内容方法
private void onCreateNameDialog() {
// 使用LayoutInflater来加载dialog_setname.xml布局
LayoutInflater layoutInflater = LayoutInflater.from(this);
View nameView = layoutInflater.inflate(R.layout.dialog_setname, null);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
this);
// 使用setView()方法将布局显示到dialog
alertDialogBuilder.setView(nameView);
final EditText userInput = (EditText) nameView.findViewById(R.id.changename_edit);
final TextView name = (TextView) findViewById(R.id.changename_textview);
// 设置Dialog按钮
alertDialogBuilder
.setCancelable(false)
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// 获取edittext的内容,显示到textview
name.setText(userInput.getText());
}
})
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
}
通常的AlertDialog 实现退出账号效果
- 设置Yes和Cancel按钮和点击事件
AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this);
builder1.setMessage("确定退出账号?")
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
finish(); // 这里使用finish() 模拟下退出账号~
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
}
});
// Create the AlertDialog object and return it
builder1.show();
城市选择器
目前还没有实现... 但是我在看Github上的citypicker 目前还在学习中,如果有实现的可以讨论一下.
项目地址:Mason_Xu Github
参考:Google Android Develop Dialog
AngularJS自定义验证在程序更改模型时不会触发
我相信我正在按照文档中的指示进行自定义验证指令. Here is a jsFiddle说明问题.在小提琴中,如果您单击“更改日期程序”按钮,您可以看到验证错误不会显示(但是如果您手动更改它).这里是指令代码(也在小提琴中):
myApp.directive('pastDate',function() { return { restrict: 'A',require: '?ngModel',link: function (scope,element,attrs,ctrl) { ctrl.$parsers.unshift(function (viewValue) { var today = new Date(); today = new Date(today.getFullYear(),today.getMonth(),today.getDate()); if (new Date(viewValue) < today) { ctrl.$setValidity('pastDate',true); return viewValue; } ctrl.$setValidity('pastDate',false); return undefined; }); } }; });
我已经将你的代码更新为:this,所以它处理两种方式.
myApp.directive('pastDate',ctrl) { function validate (value) { var today = new Date(); today = new Date(today.getFullYear(),today.getDate()); if (new Date(value) < today) { ctrl.$setValidity('pastDate',true); return value; } ctrl.$setValidity('pastDate',false); return value; } ctrl.$parsers.unshift(validate); ctrl.$formatters.unshift(validate) } }; });
Ant-design-vue DatePicker 日期选择框时间选择范围限定
方法一:预选前处理
(1)disableDate禁选日期
原理:当点击展开时间选择器,会默认遍历选择器中显示的所有日期,通过date返回,我们可以return(true/false)来判断是否可选
disableDate(date){
return date<this.$moment(this.$moment(new Date()).format("YYYY-MM-DD")); //返回今天以后的日期
}
(2)disabledTime禁选时间
原理:由于禁选时间分为时、分、秒,所以需要各自返回禁选数组,time为当前选择时间
disabledEndTime(time){
let result
let startValue = this.form.getFieldValue(‘startTime’)
function returnarray(max){
var tem = [];
for (var i = 0; i < max; i++){
tem.push(i)
}
return tem
}
if(startValue){
let hours = this.$moment(startValue).format("HH");
let minutes = this.$moment(startValue).format(''mm'')
result = {
disabledHours:() => returnarray(hours)
}
//若选中时间后,动态返回可选时间(处理与开始时间同一时的情况)
if(time){
let hourschosen = this.$moment(time._d).format("HH")
if(hourschosen === hours){
result = {
disabledHours:() => returnarray(hours)
disabledMinutes:() => returnarray(parseInt(minutes, 0) + 1)
}
}
}
return result;
}
}
方法二:选中后判断
watch:{
endValue(val){
if(this.startValue && val) {
if(this.startValue > val){
let vue = new Vue()
this.endValue = null
vue.$message.warning("结束时间不能小于开始时间")
}
}
}
}
EasyUI datebox 日期选择范围
我们在使用EasyUI的datebox的时候,往往会限制选择的日期在一定范围内,因为EasyUI的daterbox在创建的时候,会包含一个calendar,所以可以通过一下代码限制选择的日期为今天以及3天后。
$(''#performDate'').datebox(''calendar'').calendar({
validator: function(date){
var now = new Date();
var d1 = new Date(now.getFullYear(), now.getMonth(), now.getDate());
var d2 = new Date(now.getFullYear(), now.getMonth(), now.getDate()+3);
return d1<=date && date<=d2;
}
});
如果是限制出生日期的话,那么就限制输入日期不能大于今天。
$(''#dd'').datebox(''calendar'').calendar({
validator: function(date){
var now = new Date();
var d1 = new Date(now.getFullYear(), now.getMonth(), now.getDate());
return date<=d1;
}
});
今天关于EXTJS自定义验证日期选择范围和excel验证日期合法的分享就到这里,希望大家有所收获,若想了解更多关于Android自定义Dialog,实现性别选择,日期选择,获取EditText内容、AngularJS自定义验证在程序更改模型时不会触发、Ant-design-vue DatePicker 日期选择框时间选择范围限定、EasyUI datebox 日期选择范围等相关知识,可以在本站进行查询。
本文标签: