未古其人

目录

读取身份证

之前写的一个读身份证的逻辑。
对应界面上的步骤处理

/**
 * 界面上的步骤操作
 * 和硬件处理分开
 * 
 * 这是身份信息采集页面对应的
 * 身份信息采集有通用操作
 * 包括身份证内容读取和输入手机号,并提交手机号
 * 这里仅保留和硬件操作关联代码
 */

// ==================== 以下是测试代码 ====================
// var discernBase = function (reqUrl) {

// 	var _discern = {};

// 	// 开启监听身份证
// 	_discern.execute = function () {
// 		// 测试代码中不做任何处理,只显示身份证采集页面
// 		$("discern_id_card_box").show();
// 		setTimeout(function() {
// 			$("#idcard_layer").show();
// 			setTimeout(_discern.nextStep, 1000); // 等待 1 秒后,跳转至输入手机页面
// 		}, 1000); // 等待 1 秒后跳转显示身份证头像
// 	};

// 	//提交数据
// 	_discern.submitData = function () {
// 		$("#loading").show();
// 		setTimeout(_discern.succeed, 5000); // 5 秒后提交数据
// 	}

// 	_discern.clear = function () { };
// 	_discern.getBusinessNo = function () {
// 		return "";
// 	};

// 	return _discern;
// }
// ==================== 以上是测试代码 ====================

function step(reqUrl, isHouseHolder) {

	// 身份证扫描硬件处理
	// 如果需要测试,将父类替换为测试代码即可
	var discern = discernBase(reqUrl, isHouseHolder);

	// 步伐计数器用界面处理
	var step = document.getElementById('step');
	var stepProgress = step.getElementsByClassName('step-progress')[0];
	var stepItem = step.getElementsByClassName('step-item');
	var nextSteps = $('.next_step');
	var step02BackBtn = $("#step02_back_btn");

	var idCardLayer = $("#idcard_layer");
	idCardLayer.hide();

	// 输入手机号键盘初始化
	var mphone = $("#mphone_number");
	var mphoneKb = $("#mphone_number_keyboard");

	var mphoneList = mphoneKb[0].children;
	for (var i = 0, len = mphoneList.length - 1; i < len; i++) {
		(function (item) {
			item.onclick = function () {
				if (mphone.val().length < 11) {
					mphone.val(mphone.val() + item.innerHTML);
				}
			};
		})(mphoneList[i]);
	}

	mphoneList[mphoneList.length - 1].onclick = function () {
		var mphoneNum = mphone.val();
		mphone.val(mphoneNum.slice(0, mphoneNum.length - 1));
	};

	var stepCnt = 1; // 步伐计数器

	function nextStep() {

		if (!!nextSteps[stepCnt]) {
			nextSteps[stepCnt].onclick = nextStep;
		}

		// 隐藏旧外框
		$("#step_0" + stepCnt++).hide();

		switch (stepCnt) {
			case 2:

				stepProgress.style.width = '100%';
				stepItem[1].className += ' step-active';

				step02BackBtn.on("click", function () {

					step02BackBtn.unbind('click');

					stepProgress.style.width = '50%';
					stepItem[1].className = 'step-item absolute_layer';

					$("#step_0" + stepCnt--).hide();
				});
				idCardLayer.hide();
				$("#step_0" + stepCnt).show();
				break;
			case 3:
				// 校验手机号
				if (!Common.Valitate.checkMphone(mphone.val())) {
					DIALOG.INFO("温馨提示", "手机号格式错误!");
					stepCnt--;
					$("#step_0" + stepCnt).show();
					return;
				}
				discern.submitData(); // 提交数据
				break;
		}
	}

	discern.nextStep = nextStep;
	discern.showIdCardHead = function () {
		idCardLayer.show();
	}
	discern.getMPhoneNum = function () {
		return mphone.val();
	}

	return discern;
}