运行 对多个事件起作用

Run function on multiple events

我需要 运行 在加载页面时在两个 cases.One 上使用一个函数,并且在每次元素 clicked.The 单击事件起作用时使用一个函数,但 onload 一个不起作用' t.

$(document).ready(function(e) {

var captcha;

    $('#captcha').on('ready click',function(){
        function alphanumeric_unique() {
            return Math.random().toString(36).split('').filter( function(value, index, self) { 
                return self.indexOf(value) === index;
            }).join('').substr(2,8);
        }

        captcha = alphanumeric_unique();

        $(this).val(captcha);
    });
});


<input type="text" readonly value="" id="captcha">

有什么帮助吗?

您需要在页面加载时触发点击事件:

$(document).ready(function(e) {

  $('#captcha').on('click',function(){
        function alphanumeric_unique() {
            return Math.random().toString(36).split('').filter( function(value, index, self) { 
                return self.indexOf(value) === index;
            }).join('').substr(2,8);
        }

        captcha = alphanumeric_unique();

        $(this).val(captcha);
    });

    $('#captcha').trigger("click"); // it will automatically call click event


});

您需要将函数放在点击事件之外。然后你可以在页面加载时调用它。

$(document).ready(function(e) {
  var captcha = alphanumeric_unique();
  $('#captcha').on('ready click', function() {
    captcha = alphanumeric_unique();
    $(this).val(captcha);
  });
});

function alphanumeric_unique() {
  return Math.random().toString(36).split('').filter(function(value, index, self) {
    return self.indexOf(value) === index;
  }).join('').substr(2, 8);
}

如果将函数放在点击事件中,则作用域将仅限于该事件处理程序。

只需单独设置您的功能并在您喜欢的任何活动中使用它

$(document).ready(function(){
    function alphanumeric_unique() {
        return Math.random().toString(36).split('').filter( function(value, index, self) { 
            return self.indexOf(value) === index;
        }).join('').substr(2,8);
    }
    var captcha = alphanumeric_unique();
    $('#captcha').on('click',function(){
        $(this).val(captcha = alphanumeric_unique());
    });
});

您可以像这样重用该功能:

function alphanumeric_unique() {
  return Math.random().toString(36).split('').filter( function(value, index, self) { 
    return self.indexOf(value) === index;
  }).join('').substr(2,8);
}

function update_captcha() {
  $('#captcha').val(alphanumeric_unique());
}

$(document).ready(function () {
  // Update when document is ready
  update_captcha();
  // Update when captcha is clicked
  $('#captcha').click(update_captcha);
});