在多个事件上运行功能

时间:2016-06-02 13:50:32

标签: javascript jquery click onload

我需要在两个案例上运行一个函数。一个页面加载时,每次单击元素一个。单击事件有效,但是上载事件没有。

$(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">

请帮忙吗?

4 个答案:

答案 0 :(得分:1)

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

$(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


});

答案 1 :(得分:1)

您需要将该功能放在click事件之外。然后你可以在页面加载时调用它。

$(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);
}

如果将函数放在click事件中,则范围将仅限于该事件处理程序。

答案 2 :(得分:1)

只需单独设置您的功能,并在任何喜欢的事件上使用它

$(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());
    });
});

答案 3 :(得分:0)

您可以重复使用这样的功能:

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);
});