javascript表单处理具体实现代码(表单、链接、按钮)

 更新时间:2016年5月9日 10:00  点击:2465

本文实例处理各种表单, 以及链接,按钮的通用组件,教大家如何对javascript表单处理进行操作,具体内容如下

/**
 * Generic Form processing js
 * @author Anthony.chen
 */
 
/**
 * Push button action [btn_action]data into form
 * If there is prescript , run the pre script
 */
"use strict";
//All ajax request are synchronized by default
var ajaxSynchronized = true;
//All ajax request will be unblock by default
var ajaxAutoUnblock = true;
 
var ajax_action_button = function (e){
  var btn = $(this);
  //Add prescript
  var pre_script;
  if(pre_script = btn.attr("pre_script")){
    var ret = eval(pre_script);
    if(ret==false){
      return false;
    }
  }
  var btn_action = btn.attr('value');
  if(btn_action){
    $(this).closest('form').data('btn_action',
      { name:'btn_action',value:btn_action }
      );
  }
};
 
/**
 * Update the extra form data in FormElement with Form element, Key and Value
 */
var ajax_update_post_data = function(formEle, k, v){
  var form = $(formEle);
  var post_data = form.data('post_data');
  if( post_data == undefined ){
    post_data = {};
  }
 
  if( v == undefined ){
    delete post_data[k];
  }else{
    post_data[k] = v;
  }
  form.data('post_data',post_data);
  return true;
};
 
/**
 * Bool Checkbox is special checkbox which needs to keep UNCHECK value 
 * And post with ajax form ,the form is in the parent
 */
var bool_checkbox = function(){
  var ipt = $(this);
  var formEle = ipt.closest("form");
  var _check = ipt.prop("checked");
  if(_check){
    ajax_update_post_data(formEle,ipt.attr('name'));
  }else{
    ajax_update_post_data(formEle,ipt.attr('name'),'f');
  }
};
 
/**
 * Init the spin number
 */
var spin_number = function(){
  var spin = $(this);
  var config = { 
   lock:true,
     imageBasePath: '{webpath}/css/images/spin/',
     btnCss: null,
     txtCss: null,
     btnClass:'spin_btn',
  };
  var interval = spin.attr('interval');
  if(interval){
    config.interval = interval;
  }else{
    config.interval = 1;
  }
 
  var min = spin.attr('min');
  if( min ){
    config.min = min;
  }
 
  var max = spin.attr('max');
  if( max ){
    config.max = max;
  }
 
  spin.spin(config);
  return true;
};
 
/**
 * Init the date input
 */
var date_input = function(){
  var ipt = $(this);
  var config = {
    offset:[4,0],
    selectors:true,
    lang: '{lang}',
    firstDay : 1,
    format: 'yyyy-mm-dd',
  };
   
  var min = ipt.attr('min');
  if( min ){
    config.min = min;
  }
 
  var min = ipt.attr('min');
  if( min ){
    config.min = min;
  }
 
  ipt.dateinput(config);
  return true;
};
 
 
/**
 * Init the timePicker
 */
var time_picker = function(){
  var ipt = $(this);
  var config = { };
 
  var step = ipt.attr("step");
  if( step ){
    config.step = step;
  }
 
  ipt.timePicker( config );
  return true;
};
 
/**
 * Generic Ajax Form post function
 * If btn_action is set, then add data into form
 * if returi is set, redirect to returi
 * if reload is set, reload 
 * else Show block message
 *
 * the form will be validated.
 */
var ajax_form_post = function(e){
  var form = $(this);
  var pre_script;
  if(pre_script = form.attr("pre_script")){
    var ret = eval(pre_script);
    if(ret==false){
      return false;
    }
  }
  var errHint = form.find(".formError").first();
  if(errHint.size() == 0){
    errHint = $("#pageError");
  }
  errHint.text('').hide();
 
  //Cleanup the pageError
  if(!e.isDefaultPrevented()){
    //Hide all .formError
    $.blockUI({ message:"{__('L_PROCESSING')}" });
    var formArray = form.serializeArray();
    var btn_action_data;
    var btn_action;
    if(btn_action_data = form.data('btn_action')){
      formArray.push(btn_action_data);
      form.removeData('btn_action');
      btn_action = btn_action_data.value;
    }else{
      btn_action = '';
    }
 
    console.log('btn action:'+btn_action);
    //Add extra Data
    var post_data;
    if(post_data = form.data('post_data')){
      for (var k in post_data ){
        //if post_data[k] is array,need more to do
        formArray.push( { name:k ,value: post_data[k] } );
      }
      form.removeData('post_data');
    }
     
    $.post(form.attr('action'), formArray,function(json){
        if($(window).data('blockUI.isBlocked') == 1){
          $.unblockUI();
        }
        if(json.code === true){
          var returi = "";
          var retData = "{__('L_PROCESSED')}!";
          if(json.data){
            retData = json.data;  
          }
 
          //TODO Add suppport to allow save and stay
          if(btn_action =='reqonly'){
            if(returi = form.attr('returi')){
              $(window).data('blockUI.returi',returi);
              ajaxAutoUnblock = false;
            }
            $.blockUI({ message:retData, css:{ cursor:'pointer',padding:'4px',border:'3px solid #CC0000',}, overlayCSS:{ cursor:'pointer' } });
            $(".blockUI").addClass("blockwarn");
          } //if there is returi set, then return to uri
          else if(returi = form.attr('returi')){
            window.location = returi;
          //Else if reload is set, then will be reload
          }else if(form.attr('reload')!=undefined){
            window.location.reload();
          }else{
            $.blockUI({ message:retData });
            $.unblockUI();
          }
        }
        else{
          if(typeof (json.data.errmsg) == 'string'){
            errHint.html(json.data).show();
            //$.blockUI({ message:json.data, css:{ cursor:'pointer',padding:'4px',border:'3px solid #CC0000',}, overlayCSS:{ cursor:'pointer' } });
            //$(".blockUI").addClass("blockwarn");
          }else{
            errHint.html("{Html::text(__('E_FORM'))}").show();
            for(var p in json.data){
              var msg = json.data[p];
              //Process hidden value,None hidden input should has refid refered to hidden value
              //Showing the Server message to ref 
              var ele = form.find("[type=hidden][name="+p+"]");
              if(ele.length){
                delete json.data.p;
                refid = ele.attr("id");
                refname = form.find("[hidden-id="+refid+"]").attr("name");
                json.data[refname]=+msg;
              }
 
              //Muti checkbox 
              var ele = form.find("[type=checkbox][name='"+p+"[]']");
              if(ele.length){
                delete json.data.p;
                refname = p+'[]';
                json.data[refname]=+msg;
              }
              //@END
            }
          }
          /*
           * Checking the hidden values 
           */
          form.data("validator").invalidate(json.data);
        } },'json');
        e.preventDefault();
  }else{
    errHint.html("{Html::text(__('E_FORM'))}").show();
  }
};
 
/***
 * Reset the input
 */
var ajax_post_form_hidden = function(){ 
    var form = $(this);
 
    form.find("[hidden-id]").each(function(){
      //Clear the message of Reference 
      var input = $(this);
      var refid = input.attr("hidden-id");
      var field = $("#" + refid + ""); 
      //Setup the clear of Errmsg
      //Monitor the change event on ID element, remove error message 
      //of Real input
      field.change(function(){ 
        //Hidden input
        var hinput = $(this);
        //real input
        var rinput = $("[hidden-id="+hinput.attr("id")+"]").first();
        form.data('validator').reset(rinput)
        });
      });
    };
 
var validate_hidden_id = function(input) {
  var refid = input.attr("hidden-id");
  var field = $("#" + refid + ""); 
  var msg = field.attr('msg');
  if( !msg ){
    msg = "{__('E_NOT_EMPTY')}";
  }
 
  return field.val() ? true : msg; 
};
 
var data_equals_validate = function(input) {
  var field;
  var name = input.attr("data-equals");
  field = this.getInputs().filter("[name=" + name + "]");
  return input.val() == field.val() ? true : [name];
};
 
/**
 * Ajax request through link
 * If confirm is set, confirm before send request
 * Support returi and reload
 * Else show block message
 */
var ajax_link_req = function(){
  var l = $(this);
  var hint = l.attr('hint');
  if(hint){
    var errHint = $(l.attr('hint'));
    errHint.text('').hide();
  }
  //If the confirm message is set, then should be confirmed from client
  if(l.attr('confirm')){
    if(!confirm(l.attr('confirm'))){
      return false;
    }
  }
 
  $.blockUI({ message:"{__('L_PROCESSING')}" });
 
  var pre_script;
  if(pre_script = l.attr("pre_script")){
    var ret = eval(pre_script);
    if(ret==false){
      return false;
    }
  }
 
  var block = l.attr('block');
  if(block != undefined){
    ajaxAutoUnblock = false ;
  }
 
  $.get(l.attr('href'),function(json){
      if(json.code == true){
        var retData = "{__('L_PROCESSED')}!";
        var returi;
        //If success to execute funtion for each
        var successFunc = l.attr('success');
        if(successFunc){
          l.each(window[successFunc]);
        }
 
        if(json.data){
          retData = json.data;  
        }
        //IF Require warning before
        if( l.attr('value') == 'reqonly'){
          alert(retData);
        }else if(returi = l.attr('returi')){
          window.location = returi;
        }
        else if(l.attr('reload')!=undefined){
          window.location.reload();
        }
        else{
          $.blockUI({ message:retData, css:{ cursor:'pointer',padding:'4px',border:'3px solid #CC0000',}, overlayCSS:{ cursor:'pointer' } });
          $(".blockUI").addClass("blockwarn");
        }
      }else{
        //$.unblockUI();
        //Only could support Text errmsg
        if(hint){
          errHint.text(json.data).show();
        }else{
          alert(json.data);
        }
      }},'json');
  return false;
};
 
/**
 * Supporting the button base navigation
 * Only jump to new href
 */
var btn_nav = function(){
  var input = $(this);
  var href = input.attr("href");
  if(href){
    window.location = href;
  }else{
    alert("Href not set");
  }
  return false;
};
 
/**
 * Support button base Ajax get method request
 * support returi and reload
 */
var btn_req = function(){
  var input = $(this);
  var href = input.attr("href");
 
  var hint = input.attr('hint');
  if(hint){
    var errHint = $(hint).first();
    if(errHint.size() == 0){
      errHint = $("#pageError");
    }
    errHint.text('').hide();
  }
 
  var block = input.attr('block');
  if(block != undefined){
    ajaxAutoUnblock = false
  }
 
  $.get(href,function(json){
      if(json.code == true){
      var returi;
      if(returi = input.attr('returi')){
        window.location = returi;
      }
      else if(input.attr("reload")!=undefined){
        window.location.reload();
      }else{
          var retData = "{__('L_PROCESSED')}!";
          if(json.data){
            retData = json.data;  
          }
          $.blockUI({ message:retData,css:{ cursor:'pointer' },overlayCSS:{ cursor:'pointer' } });
        }
      }else{
        if(hint){
          $.unblockUI();
          errHint.html(json.data.errmsg).show();
        }else{
          $.blockUI({ message:json.data.errmsg, css:{ cursor:'pointer',padding:'4px',border:'3px solid #CC0000',}, overlayCSS:{ cursor:'pointer' } });
          $(".blockUI").addClass("blockwarn");
        }
      }
      },'json');
  return false;
};
 
 
 
/**
 * Generic Ajax Checkbox
 * The default action is prevented and submit real request through URL
 */
var ajax_checkbox = function(){
  event.preventDefault();
  var action = $(this);
  var url = action.attr('url');
  var _check = action.prop("checked");
  console.log(_check);
  var op ; 
  if(_check){
    op = "1";
  }else{
    op = "0";
  }
  $.get(url + op ,function(json){
    if(json.code == true){
        if(_check){
          action.prop("checked",true);
        }else{
          action.prop("checked",false);
        }
        return true;
      }else{
        return false;
      }
  },'json');
};
 
 
/**
 * Crete Root picklist 
 */
var picklistinit = function(){
  var _select = $(this);
  var _hidden_id = _select.attr('hidden-id');
  var _un = _select.attr('un');
  var _lovchildren = _select.data('lovtree').c;
  var _rowvalue = _select.data('rowvalue');
 
  $("<OPTION>").append("{__('L_SELECT')}").appendTo(_select);
  for(var _kid in _lovchildren){
    var _lov = _lovchildren[_kid]['lov'];
    $("<OPTION>").val(_lov.lov_id).append(_lov.v).attr('k',_lov.id).attr('is_leaf',_lov.is_leaf).appendTo(_select);
  }
  _select.change(picklistchange);
 
  //Select the list
  if(_rowvalue){
    _select.find("[value="+_rowvalue[0]+"]").prop("selected",true);
    _select.change();
  }
  return true;
};
 
/**
 * Select pick list
 */
var picklistchange = function (){
  var _select = $(this);
  var _hidden_id = _select.attr('hidden-id');
  var _un = _select.attr('un');
 
  //Remove all the subsequent 
  var _lovtree = _select.data('lovtree');
  var _rowvalue = _select.data('rowvalue');
 
  _select.nextAll().remove();
 
  //This is value of Current Select
  var _selected = _select.find(':selected');
  if(_selected.attr('is_leaf')=="{DB::T}"){
    $("#"+_hidden_id).val(_select.val());
    _select.after("<img src='/s.gif' class='sprite_global successimg'/>");
  }else{
    var _val = _select.val();
    var _k = _selected.attr('k');
 
    //Getting Children list
    if(_lovtree.c[_k].c == undefined){
      return false;
    }
    var _c_lovtree = _lovtree.c[_k];
 
    var _c_select = $('<SELECT>').data('lovtree',_c_lovtree).
      data('rowvalue',_rowvalue).
      attr('hidden-id',_hidden_id).attr('un',_un).
      attr('name',_un+'_'+_k);
    $("<OPTION>").append("{__('L_SELECT')}").appendTo(_c_select);
    //Building the option list
    for(var _kid in _c_lovtree.c){
      var _lov = _c_lovtree.c[_kid]['lov'];
      $("<OPTION>").val(_lov.lov_id).append(_lov.v).attr('k',_lov.id).attr('is_leaf',_lov.is_leaf).appendTo(_c_select);
      //Insert after
      _select.after(_c_select);
      //Onchange
    }
    _c_select.change(picklistchange);
 
    if(_rowvalue){
      _c_select.find("[value="+_rowvalue[_k]+"]").prop("selected",true);
      _c_select.change();
    }
  }
};
 
 
 
var lookup_new = function(){
  var lookup = $(this);
  var pre_script;
  if(pre_script = lookup.attr("pre_script")){
    var ret = eval(pre_script);
    if(ret==false){
      return false;
    }
  }
  var url = lookup.attr("url");
  if(!url){
    alert('url not set');
    return false;
  }
  var height = lookup.attr('h');
  if(!height){
    height = 600;
  }
  var width = lookup.attr('w');
  if(!width){
    width = 800;
  }
  window.open(url,"pselect","scrollbars=yes,menubar=no,height="+height+",width="+width+",resizable=yes,toolbar=no,location=no,status=no");
  return false;
};
 
/**
 * Lookup new value for hidden value
 */
var parent_lookup = function(){
  var lookup = $(this);
  var pid = opener.$("#" + lookup.attr('pid'));
  if(!pid.length){
    alert(lookup.attr('pid')+ " not found");
    return false;
  }
  var pname = opener.$( "#" + lookup.attr('pname'));
  if(!pname.length){
    alert(lookup.attr('pname')+ " not found");
    return false;
  }
 
  var aft_script;
  //Run current after script
  if(aft_script = lookup.attr('aft_script')){
    window.eval(aft_script);
  }
 
  pid.val($(this).attr("refid")); 
  //Only operation from opener could trigger change event
  pid.change();
  pname.val($(this).attr("refvalue"));  
  pname.change();
  //Parent after_script
  if(aft_script = pname.attr('aft_script')){
    opener.window.eval(aft_script);
  }
  if(aft_script = pid.attr('aft_script')){
    opener.window.eval(aft_script);
  }
  window.close();
};
 
/**
 * Default upload complete
 */
//var uploadComplete = function(event, id, fileName, responseJSON) { 
var uploadComplete = function(e, data) { 
  //To be replaced by jquery uploader
  var _fileUpload = $(this);
  //console.log(_fileUpload);
  //console.log(data.result);
  if(_fileUpload.attr('reload')!=undefined){
    window.location.reload();
  }
};
 
/**
 * File upload function ,the following attribute to control action of upload
 * 'endpoint' as upload url
 * 'sid' as session id
 * 'complete' optional to configure the custom upload complete function
 */
var genericUpload = function(dom){
  var endpointurl = $(this).attr('endpoint');
  var sid = $(this).attr("sid");
  var completeFunc = 'uploadComplete';
  //Setup custome complete function
  var cusComplete = $(this).attr('complete');
  if(cusComplete){
    completeFunc = cusComplete;
  }
 
  $(this).fileupload({
    url: endpointurl,
    autoUpload:true,
    dataType:'json',
    formData: [{ 'sessionid': sid }],
    paramName: 'Filedata',
  }).bind('fileuploaddone',window[completeFunc]);
};
 
/**
 * Matched errors with input 
 * Only matched errors could be identified here
 */
var advance_validate = function(errors, event) {
  var conf = this.getConf();
  // loop errors
  $.each(errors, function(index, error) {
      // add error class into input Dom element
      var input = error.input;          
 
      input.addClass(conf.errorClass);
 
      // get handle to the error container
      var msg = input.data("msg.el"); 
 
      // create Error data if not present, and add error class for input
      // "msg.el" data is linked to error message Dom Element
      if (!msg) { 
      //msg = $(conf.message).addClass(conf.messageClass).insertAfter(input);
      msg = $(conf.message).addClass(conf.messageClass).appendTo(input.parent());
      input.data("msg.el", msg);
      } 
 
      // clear the container 
      msg.css({visibility: 'hidden'}).find("span").remove();
 
      // populate messages
      $.each(error.messages, function(i, m) { 
          $("<span/>").html(m).appendTo(msg);      
          });
 
      // make sure the width is not full body width so it can be positioned correctly
      if (msg.outerWidth() == msg.parent().width()) {
        msg.add(msg.find("span"));   
      } 
 
      //insert into correct position (relative to the field)
 
      msg.css({ visibility: 'visible'}) .fadeIn(conf.speed);   
      msg.parent().addClass("colError");
  });
};
 
var advance_inputs = function(inputs) {
  var conf = this.getConf();       
  inputs.removeClass(conf.errorClass).each(function() {
      var msg = $(this).data("msg.el");
      if (msg) {
      msg.hide();
      msg.parent().removeClass("colError");
      }
      });
  if($(".colError").size() == 0){ 
    var form = $(this);
    var errHint = form.find(".formError").first();
    if(errHint.size() == 0){
      errHint = $("#pageError");
      errHint.text('').hide();
    }
  }
};
 
/**
 * When refname is contained to be selected
 */
var checkall = function() { 
  var check = $(this);
  var refname = check.attr('refname');
  if(refname){
    if(check.prop("checked")){
      $("input[name*='"+refname+"']").prop("checked",true);
    }else{
      $("input[name*='"+refname+"']").prop("checked",false);
    }
  }
 
  var refclass = check.attr('refclass');
  if(refclass){
    if(check.prop("checked")){
      $("input."+refclass).prop("checked",true);
    }else{
      $("input."+refclass).prop("checked",false);
    }
  }
};
 
/**
 * Setup readonly checkbox 
 */
var readonlyCheck = function(e){
  e.preventDefault(); 
  return false;
};
 
/**
 * Select List disable
 */
var readonlySelect = function(){
  $(this).prop("disabled", true); 
};
 
 
$(document).ready(function() {
    $(document).ajaxStart(function(){
      //Clean up the Ajax request Page Level Error
      $("#pageError").text('').hide();
      //Clean up teh Form Error
      $(".formError").text('').hide();
      //Blocking all ajax processing
      if(ajaxSynchronized){
        $.blockUI({ message:"{__('L_PROCESSING')}" });
        }
      });
    $(document).ajaxStop(function(){
      if(ajaxSynchronized){
        if($(window).data('blockUI.isBlocked') == 1){
          if(ajaxAutoUnblock){
            $.unblockUI();
          }else{
            ajaxAutoUnblock = true;
          }
        }
      }else{//Change back to default Synchronized mode from Async
        ajaxAutoUnblock = true;
        ajaxSynchronized = true;
      }
      });
    $(document).ajaxError(function(event, request, settings){
      alert('Ajax Request Error! URL='+settings.url);
      if(ajaxSynchronized){
        if($(window).data('blockUI.isBlocked') == 1){
          if(ajaxAutoUnblock){
            $.unblockUI();
          }else{
            ajaxAutoUnblock = true;
          }
        }
      }else{
        ajaxAutoUnblock = true;
        ajaxSynchronized = true;
      }
      });
 
    //Force unblockUI
    $(document).click(function(){
        if($(window).data('blockUI.isBlocked') == 1){
          $.unblockUI();
          var returi = $(window).data('blockUI.returi');
          if(returi){
            window.location = returi;
          }
        }});
 
    $.tools.validator.addEffect("advanced", advance_validate,advance_inputs);
    $.tools.validator.fn("[data-equals]", { "{lang}":"{__('E_NOTEQUAL')}" }, data_equals_validate );
    $.tools.validator.fn("[hidden-id]",validate_hidden_id);
 
    $(".ajax_form_post").validator({ lang:'{lang}',effect:'advanced' }) .submit( ajax_form_post );
    $(".ajax_form_post").each(ajax_post_form_hidden);
    $(".spin_number").each(spin_number);
    $(".date_input").each(date_input);
    $(".time_picker").each(time_picker);
 
    $('.ajax_link_req').click(ajax_link_req);
    //Client validation for the hidden ID 
    $(".require_validate").validator({ lang:'{lang}',effect:'advanced' });
 
    $(".btn_nav").click( btn_nav );
    $(".btn_req").click( btn_req );
    $("button.btn_action").click(ajax_action_button);
    $(".lookup_new").click(lookup_new);
    $(".parent_lookup").click(parent_lookup);
    $(".ajax_checkbox").click(ajax_checkbox);
    $(".bool_checkbox").click(bool_checkbox);
    $(".checkall").click(checkall);
    $("img[rel]").overlay();
    $("input[tip]").tooltip({ position:"center right"});
 
    //At last we will do localize
    $.tools.validator.localize("{lang}", {
      '*'   : "{__('E_ALL')}",
      ':email'  : "{__('E_EMAIL')}",
      ':number'  : "{__('E_DECIMAL')}",
      ':url'   : "{__('E_URL')}",
      '[max]'   : "{__('E_MAX_LENGTH')}",
      '[min]'   : "{__('E_MIN_LENGTH')}",
      '[required]'  : "{__('E_NOT_EMPTY')}",
      });
});

以上就是本文的全部内容,希望对大家掌握javascript表单处理操作有所帮助,谢谢大家的阅读。

[!--infotagslink--]

相关文章

  • JavaScript判断浏览器及其版本信息

    本篇文章主要分享了通过window.navigator来判断浏览器及其版本信息的实例代码。具有一定的参考价值,下面跟着小编一起来看下吧...2017-01-23
  • js实现浏览器打印功能的示例代码

    这篇文章主要介绍了js如何实现浏览器打印功能,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-15
  • Nest.js参数校验和自定义返回数据格式详解

    这篇文章主要给大家介绍了关于Nest.js参数校验和自定义返回数据格式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-28
  • 详解前端安全之JavaScript防http劫持与XSS

    作为前端,一直以来都知道HTTP劫持与XSS跨站脚本、CSRF跨站请求伪造。防御这些劫持最好的方法是从后端入手,前端能做的太少。而且由于源码的暴露,攻击者很容易绕过防御手段。但这不代表我们去了解这块的相关知识是没意义的,本文的许多方法,用在其他方面也是大有作用。...2021-05-24
  • 利用JS实现点击按钮后图片自动切换的简单方法

    下面小编就为大家带来一篇利用JS实现点击按钮后图片自动切换的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-10-25
  • JS中artdialog弹出框控件之提交表单思路详解

    artDialog是一个基于javascript编写的对话框组件,它拥有精致的界面与友好的接口。本文给大家介绍JS中artdialog弹出框控件之提交表单思路详解,对本文感兴趣的朋友一起学习吧...2016-04-19
  • JavaScript仿支付宝密码输入框

    那么今天我就用JavaScript代码来实现这个效果吧,那么首先介绍一下整个的思路,首先我们先将确定输入密码的位数,我的需求是5位,那么就用一个div标签包住5个input标签...2016-01-02
  • js+css实现回到顶部按钮(back to top)

    这篇文章主要为大家详细介绍了js+css实现回到顶部按钮back to top回到顶部按钮,感兴趣的小伙伴们可以参考一下...2016-03-03
  • js实现上传图片及时预览

    这篇文章主要为大家详细介绍了js实现上传图片及时预览的相关资料,具有一定的参考价值,感兴趣的朋友可以参考一下...2016-05-09
  • js实现调用网络摄像头及常见错误处理

    这篇文章主要介绍了js实现调用网络摄像头及常见错误处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-07
  • JS实现随机生成验证码

    这篇文章主要为大家详细介绍了JS实现随机生成验证码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-06
  • js组件SlotMachine实现图片切换效果制作抽奖系统

    这篇文章主要介绍了js组件SlotMachine实现图片切换效果制作抽奖系统的相关资料,需要的朋友可以参考下...2016-04-19
  • vue.js 表格分页ajax 异步加载数据

    Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统.这篇文章主要介绍了vue.js 表格分页ajax 异步加载数据的相关资料,需要的朋友可以参考下...2016-10-20
  • 基于JavaScript实现表单密码的隐藏和显示出来

    为了网站的安全性,很多朋友都把密码设的比较复杂,但是如何密码不能明显示,不知道输的是对是错,为了安全起见可以把密码显示的,那么基于js代码如何实现的呢?下面通过本文给大家介绍JavaScript实现表单密码的隐藏和显示,需要的朋友参考下...2016-03-03
  • js实现列表按字母排序

    这篇文章主要为大家详细介绍了js实现列表按字母排序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-08-11
  • 基于JavaScript实现文字超出部分隐藏

    这篇文章主要介绍了基于JavaScript实现文字超出部分隐藏 的相关资料,需要的朋友可以参考下...2016-03-01
  • JS实现响应鼠标点击动画渐变弹出层效果代码

    这篇文章主要介绍了JS实现响应鼠标点击动画渐变弹出层效果代码,具有非常自然流畅的动画过度效果,涉及JavaScript针对鼠标事件的响应及页面元素样式的动态操作相关技巧,需要的朋友可以参考下...2016-03-28
  • node.JS md5加密中文与php结果不一致怎么办

    这次文章要给大家介绍的是node.JS md5加密中文与php结果不一致怎么办,不知道具体解决办法的下面跟小编一起来看看。 因项目需要,需要Node.js与PHP做接口调用,发现nod...2017-07-06
  • 浅析AngularJS Filter用法

    系统的学习了一下angularjs,发现angularjs的有些思想根php的模块smarty很像,例如数据绑定,filter。如果对smarty比较熟悉的话,学习angularjs会比较容易一点,这篇文章给大家介绍angularjs filter用法详解,感兴趣的朋友一起学习吧...2015-12-29
  • 一个关于JS正则匹配的踩坑记录

    这篇文章主要给大家介绍了一个关于JS正则匹配的踩坑记录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-13