提交表单上的微调器

时间:2014-10-15 23:16:54

标签: javascript jquery forms

我正在寻找构建一个脚本,在表单提交或选择更改时打开一个微调器。

我想使用spin.js,(这是开发人员的一个工作示例):

  

var opts = {
  lines: 11, // The number of lines to draw
  length: 15, // The length of each line
  width: 10, // The line thickness
  radius: 30, // The radius of the inner circle
  corners: 1, // Corner roundness (0..1)
  rotate: 0, // The rotation offset
  direction: 1, // 1: clockwise, -1: counterclockwise
  color: '#000', // #rgb or #rrggbb
  speed: 0.6, // Rounds per second
  trail: 60, // Afterglow percentage
  shadow: false, // Whether to render a shadow
  hwaccel: false, // Whether to use hardware acceleration
  className: 'spinner', // The CSS class to assign to the spinner
  zIndex: 2e9, // The z-index (defaults to 2000000000)
  top: 'auto', // Top position relative to parent in px
  left: 'auto' // Left position relative to parent in px
};

var spinner = null;
var spinner_div = 0;

$(document).ready(function() {

  spinner_div = $('#spinner').get(0);

  $("#btn-spin").click(function(e) {
    e.preventDefault();
    if(spinner == null) {
      spinner = new Spinner(opts).spin(spinner_div);
    } else {
      spinner.spin(spinner_div);
    }
  });

 });

所以...当我点击我的提交按钮

    <input id="btn-spin" type="submit" name="next" value="Continua" class="button-big"/>

或当我在选择

上更改值时
                <select name="billing_country" onChange="this.form.submit();">
                    {billing_country_options}
                </select>

我想:

  1. 将“lightbox-is-open”和“lightbox-is-fixed”类添加到HTML
  2. 从我的glasspane div中删除“隐藏”类
  3. 启动(或显示)微调器
  4. 等待500毫秒
  5. 提交按钮或选择(然后将加载其他页面)
  6. 有人可以帮我吗? 它太难了,对我来说是一个非常困难的难题,(我是一个音响工程师,而不是网络开发人员)

    非常感谢

1 个答案:

答案 0 :(得分:0)

假设您已正确初始化了微调器,我们可以使用jQuery监听表单提交或选择更改事件,并避免使用内联JS。对于<select>,只需删除内联JS。

$(function() {
    // Remember to use 'var'
    var spinner_div = $('#spinner').get(0),
        spinner,
        opts = {
            // Opts go here
        },
        showSpinner = function() {
            // Add 'lightbox-is-open' and 'lightbox-is-fixed' classes to HTML
            $('html').addClass('lightbox-is-open lightbox-is-fixed');

            // Remove 'hidden' class from '.glasspane'
            $('.glasspane').removeClass('hidden');

            // Show spinner
            if(spinner == null) {
                spinner = new Spinner(opts).spin(spinner_div);
            } else {
                spinner.spin(spinner_div);
            }

            // Submit form after 500ms
            var timer = window.setTimeout(function() {
                $('form').submit();
            }, 500);
        };

    // Bind events
    $('form').on('submit', function(e) {
        e.preventDefault();
        showSpinner();
    });
    $('#btn-spin').on('click', function(e) {
        e.preventDefault();
        showSpinner();
    });
    $('select').on('change', showSpinner);
});