js验证表单第二部分

  说明:JavaScript脚本,验证表单中的数据项  begin

  -------------------------------------------------------------------------------

  */

  function checkForm(objFrm){

  var len = 0;

  len = objFrm.elements.length;

  var i = 0;

  var objCheck;

  //文本框

  for(i = 0; i < len; i ++){

  objCheck = objFrm.elements[i];

  if(objCheck.type =="text" && !f_checkTextValid(objCheck) ){

  return false;

  }

  }

  //下拉框

  for(i = 0; i < len; i ++){

  objCheck = objFrm.elements[i];

  if(objCheck.type =="select-one" && !f_checkSelectValid(objCheck) ){

  return false;

  }

  }

  //时间段有效

  if( f_checkStartAndEndDate(objFrm) == false) return false;

  return true;

  }

  function f_checkSelectValid(obj){

  //alert("check select");

  if(obj.options.length <= 0){

  alert("下拉选框无数据!");

  return false;

  }

  return true;

  }

  function f_checkStartAndEndDate(frm){

  var len = frm.elements.length;

  if(len == null && len == 0) return true;

  var i=0;

  var temp;

  var objCheck;

  var objStartDate;

  var objEndDate;

  //alert("start date period check");

  try{

  for(i=0; i< len ; i++){

  objCheck = frm.elements[i];

  temp = objCheck.name;

  if( temp.indexOf("startDate") >0 ||temp.indexOf("beginDate")>0 )

  objStartDate = objCheck;

  if( temp.indexOf("endDate") > 0 )

  objEndDate = objCheck;

  }

  //alert(objStartDate.value);

  //alert(objEndDate.value);

  if(objStartDate.value==null || objStartDate.value =="" || objStartDate.value ==null || objStartDate.value ==""){

  return true;

  }

  return checkTwoDate(objStartDate.value, objEndDate.value);

  //alert("end date period check");

  }catch(E){}

  return true;

  }

  function f_checkTextValid(obj){

  //不能为空

  if(obj.getAttribute("isNeed") != null){

  if(f_isNotNull(obj) == false) return false;

  }

  //不能超过长度

  if(obj.getAttribute("maxlength") != null){

  if(f_checkLength(obj) == false) return false;

  }

  var checkType ="";

  checkType = obj.getAttribute("checkType");

  if(checkType==null||checkType=="") return true;

  //

  if (checkType.indexOf("number") >=0){

  if(f_isNumber(obj) == false)  return false;

  if(f_checkNumType(obj,checkType) == false)  return false;

  }

  //

  if (checkType.indexOf("positive") >=0){

  if(f_isNumber(obj) == false)  return false;

  if(f_isPositive(obj)==false)  return false;

  if(f_checkNumType(obj,checkType) == false)  return false;

  }

  if (checkType.indexOf("date") >=0){

  if(f_checkDate(obj) == false) return false;

  }

  /*

  switch(checkType){

  case "number": if(f_isNumber(obj) == false) return false;break;

  case "date": if(f_checkDate(obj) == false) return false;break;

  default:

  }

  */

  return true;

  }

  function f_isNotNull(obj){

  if(obj.value == ""){

  f_alert(obj, " 不允许为空值!");

  return false;

  }

  return true;

  }

  function f_isNumber(obj){

  if(isNaN(obj.value)){

  f_alert(obj," 应为数值类型");

  return false;

  }

  return true;

  }

  function f_checkDate(obj) {

  if(checkDate(obj.value) ==false){

  f_alert(obj," 不是合法日期格式!");

  return false;

  }

  return true;

  }

  function f_checkLength(obj){

  if(getTotalBytes(obj) > Math.abs( obj.getAttribute("maxlength") ) ){

  f_alert(obj," 超出长度限制!");

  return false;

  }

  return true;

  }

  function  f_alert(obj,alertStr){

  var fielName = obj.getAttribute("fieldName");

  if(fielName == null)

  fielName = "";

  alert(fielName + "\n" +alertStr);

  obj.select();

  obj.focus();

  }

  function f_checkNumType(obj, numType){

  //假设: 已经进行数字类型判断

  var strTemp;

  var numpric;

  var numLen;

  var strArr;

  var defaultLen = 19;

  var defaultpric = 5;

  try{

  if(numType == null|| numType =="") return f_checkNumLenPrec(obj,defaultLen, defaultpric);

  if(numType.indexOf("(") < 0 || numType.indexOf(")") < 0 ) return f_checkNumLenPrec(obj,defaultLen, defaultpric);

  strTemp = numType.substr( numType.indexOf("(") + 1 ,numType.indexOf(")") - numType.indexOf("(") -1 );

  if(strTemp == null||strTemp =="") return f_checkNumLenPrec(obj,defaultLen, defaultpric);

  strArr = strTemp.split(",");

  numLen = Math.abs( strArr[0] );

  numpric = Math.abs( strArr[1] );

  return f_checkNumLenPrec(obj,numLen, numpric);

  }catch(e){

  alert("in f_checkNumType = " + e);

  return f_checkNumLenPrec(obj,defaultLen, defaultpric);

  }

  }

  function f_checkNumLenPrec(obj, len, pric){

  var numReg;

  var value = obj.value;

  var strValueTemp, strInt, strDec;

  //alert(value + "=====" + len + "====="+ pric);

  try{

  numReg =/[\-]/;

  strValueTemp = value.replace(numReg, "");

  strValueTemp = strValueTemp.replace(numReg, "");

  //整数

  if(pric==0){

  numReg =/[\.]/;

  //alert(numReg.test(value));

  if(numReg.test(value) == true){

  f_alert(obj, "输入必须为整数类型!");

  return false;

  }

  }

  if(strValueTemp.indexOf(".") < 0 ){

  //alert("lennth==" + strValueTemp);

  if(strValueTemp.length >( len - pric)){

  f_alert(obj, "整数位不能超过"+ (len - pric) +"位");

  return false;

  }

  }else{

  strInt = strValueTemp.substr( 0, strValueTemp.indexOf(".") );

  //alert("lennth==" + strInt);

  if(strInt.length >( len - pric)){

  f_alert(obj, "整数位不能超过"+ (len - pric) +"位");

  return false;

  }

  strDec = strValueTemp.substr( (strValueTemp.indexOf(".")+1), strValueTemp.length );

  //alert("pric==" + strDec);

  if(strDec.length > pric){

  f_alert(obj, "小数位不能超过"+  pric +"位");

  return false;

  }

  }

  return true;

  }catch(e){

  alert("in f_checkNumLenPrec = " + e);

  return false;

  }

  }

  function f_isPositive(obj){

  var numReg =/[\-]/;

  if(numReg.test(obj.value) == true){

  f_alert(obj, "必须为正数!");

  return false;

  }

  return true;

  }

  /*

  function selectedCheckboxCount(form)

  功能说明:对Form中选中的可选项计数

  参数说明:

  form:指定的表单

  */

  function selectedCheckboxCount(form){

  var length =0;

  var i=0;

  var count =0;

  eles = form.elements;

  while(i<eles.length){

  obj= eles.item(i);

  //type = obj.attributes.item("type").nodeValue;

  type = obj.type;

  if(type == "checkbox"){

  if(obj.checked){

  count++;

  }

  }

  i++;

  }

  return count;

  }

  //得到字节长度

  function getByteLen(str)

  {

  var l = str.length;

  var n = l;

  for ( var i=0; i<l; i++ )

  if ( str.charCodeAt(i) <0 || str.charCodeAt(i) >255 )

  n=n+1;

  return n

  }

  /*

  说明:

  1.清除表格中的数据(0.0 和 0)

  2.如果cell中没有数据,则自动加上一个空格

  3.清除空白行的checkbox

  参数:

  clearzero:是否清除"0"、"0.0",false不清除、true清除(默认为true)

  tablename:要清除的表格名字,默认为sortTable

  */

  function clear_table(clearzero,tablename)

  {

  var tobject;

  if(tablename==null)

  tobject=gmobj("sortTable");

  else

  tobject=gmobj(tablename);

  //如果table未定义,则不进行过滤

  if(tobject==null)

  return;

  //如果函数调用参数为空,表示要清除0、0.0;反之,不要清除0、0.0。

  var clear = (clearzero==null)?true:clearzero;

  //清除0、0.0,填补空格

  var rows = tobject.rows;

  var j=0;

  for(var i=0;i<rows.length;i++)

  {

  //取得第一个cell的属性clear,如果为1,表示该行没有数据,则清除该行所有数据

  while(tobject.rows[i].cells[j] != null)

  {

  if(clear)

  {

  if(tobject.rows[i].cells[j].innerHTML==0 ||tobject.rows[i].cells[j].innerHTML==0.0||tobject.rows[i].cells[j].innerHTML=="")

  tobject.rows[i].cells[j].innerText=" ";

  }

  else

  {

  if (tobject.rows[i].cells[j].innerHTML=="")

  tobject.rows[i].cells[j].innerText=" ";

  }

  j++;

  }

  j=0;

  }

  return true;

  }

  function gmobj(mtxt)  /* Get object by object name */

  {

  if (document.getElementById) {

  m=document.getElementById(mtxt);

  } else if (document.all) {

  m=document.all[mtxt];

  } else if (document.layers) {

  m=document.layers[mtxt];

  }

  return m;

  }

  /*

  -------------------------------------------------------------------------------

  说明:JavaScript脚本,验证表单中的数据项  end

  -------------------------------------------------------------------------------

  */

  /*

  用途:检查输入字符串是否是带小数的数字格式,可以是负数(并且满足规定的精度)

  输入:str:字符串

  l:总位数

  d:小数点后位数

  返回:

  如果通过验证返回true,否则返回false

  */

  function isDecimal( str,l,d ){

  if(isInteger(str)) {

  if (l==null)  return true;

  if (str<0) l--;

  if (str.length<=l) return true;

  }

  var re = /^[-]{0,1}(\d+)[\.]+(\d+)$/;

  if (re.test(str)) {

  if (l==null)  return true;

  if (d==null) d=0;

  if(RegExp.$1==0&&RegExp.$2==0) return false;

  if (RegExp.$1.length+RegExp.$2.length<=l

  && RegExp.$2.length<=d)  return true;

  }

  return false;

  }

  onclick="isNull('Co.PageForm.CompetitorName');"

  Co--指本页面   PageForm--指formName  CompetitorName---指的是文本栏名