将一些javascript变量添加到输入的VALUE属性中

时间:2017-07-22 00:15:24

标签: javascript jquery button input

有一些js动画点可以正常工作,

var dots = 0;

$(document).ready(function()
{
    setInterval (type, 600);
});

function type()
{
    if(dots < 3)
    {
        $('#dots').append('.');
        dots++;
    }
    else
    {
        $('#dots').html('');
        dots = 0;
    }
}

但不能在输入按钮的VALUE属性中使用它(在&#34;处理&#34;之后)。

<input type="button" value="Pay" onClick="this.disabled=true; this.value='Processing'">

如何以正确的方式插入? http://jsfiddle.net/te58dadw/2/

3 个答案:

答案 0 :(得分:2)

在jQuery中使用.attr('value', '.....').val()

var dots = 0;

$(document).ready(function() {
  $('#payDots').on('click', function() {
    $(this).attr('disabled', 'disabled');
    setInterval(type, 600);
  })

});

function type() {
  var dot = '.';
  if(dots < 3) {
    $('#payDots').val('processing' + dot.repeat(dots));
    dots++;
  }
  else {
    $('#payDots').val('processing');
    dots = 0;
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input id="payDots" type="button" value="Pay">

答案 1 :(得分:0)

您可以使用jQuery的val()来设置值,并且通过回调可以很容易地附加到值。

处理此问题的小插件可能很有用,例如

$.fn.dots = function(time, dots) {
  return this.each(function(i,el) {
    clearInterval( $(el).data('dots') );

    if ( time !== 0 ) {
      var d = 0;
      $(el).data('dots', setInterval(function() {
        $(el).val(function(_,v) {
          if (d < dots) {
            d++;
            return v + '.';
          } else {
            d = 0;
            return v.substring(0, v.length - dots)
          }
        })
      }, time));
    }
  });
}

你称之为

$('.elements').dots(600, 3);

可以通过传递零来取消

$('.elements').dots(0);

这是一个展示它是多么容易使用的演示。

$.fn.dots = function(time, dots) {
  return this.each(function(i,el) {
    clearInterval( $(el).data('dots') );
    
    if ( time !== 0 ) {
      var d = 0;
      $(el).data('dots', setInterval(function() {
        $(el).val(function(_,v) {
          if (d < dots) {
            d++;
            return v + '.';
          } else {
            d = 0;
            return v.substring(0, v.length - dots)
          }
        })
      }, time));
    }
  });
}

$(document).ready(function() {
  $('#dots').on('click', function() {
    $(this).val('Proccessing').prop('disabled',true).dots(600, 3);
    
    $('#cancel').show();
  });
  
  $('#cancel').on('click', function() {
    $(this).dots(200, 10);
    $('#dots').dots(0);
    setTimeout(function() {
      $('#dots').prop('disabled', false).val('Pay');
      $('#cancel').hide().dots(0);
    },2000);
  }).hide();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="dots" type="button" value="Pay" />
<br /><br />
<input id="cancel" type="button" value="Cancel dots" />

答案 2 :(得分:0)

<input>元素没有显示的.innerHTML属性。 .append().html()设置元素“.innerHTML属性,而不是.value属性。

<input>元素具有.value属性,可以使用.val(function)

在jQuery中设置

var dots = 0;
var dot = ".";

$(document).ready(function() {
  setInterval(type, 600);
});

function type() {
  if (dots < 3) {
    $('input').val(function(i, val) {
      return val + dot
    });
    dot.concat(".");
    dots++;
  } else {
    $('input').val("Pay");
    dots = 0;
    dot = "."
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
HERE IT WORKS
<div>processing<span id="dots"></span></div>
<BR>
<BR> HERE IT DOESN"T
<BR>
<input type="button" value="Pay" onClick="this.disabled=true; this.value='Processing'">