Как я могу программно вызвать onclick () событие от тега привязки при хранении 'этой' ссылки в функции onclick?

Значение флажка всегда «включено». HTML-форма отправляет значение на сервер, только если флажок установлен. Если флажок не установлен, параметр запроса будет отсутствовать. Эта семантика, по-видимому, сводит к минимуму различия между флажками и переключателями.

HTML-форма реализует следующую семантику:

if ($('#mycheckbox').is(':checked')) {
    payload['mycheckbox'] = $('#mycheckbox').val();
}

Вы можете имитировать эту семантику в Ajax или отправить флаг «флажок» непосредственно следующим образом:

payload['mycheckbox'] = $('#mycheckbox').is(':checked');

I ' рекомендую имитировать семантику HTML-формы. Независимо от того, что делает клиент, я бы рекомендовал следующее в коде сервера:

if mycheckbox param exists and its value is either 'true' or 'on' {  // pseudo code of course
    // mycheckbox is checked
} else {
    // mycheckbox is unchecked
}

Надеюсь, это объяснение поможет.

79
задан Brian Tompsett - 汤莱恩 19 August 2019 в 09:43
поделиться

3 ответа

Вам необходимо применить обработчик событий в контексте этого элемента:

var elem = document.getElementById("linkid");
if (typeof elem.onclick == "function") {
    elem.onclick.apply(elem);
}

В противном случае this будет ссылаться на контекст приведенный выше код выполняется в.

106
ответ дан 24 November 2019 в 10:13
поделиться

Чтобы вызвать событие, вы просто вызываете обработчик этого события элемент. Небольшое изменение в вашем коде.

var a = document.getElementById("element");
var evnt = a["onclick"];

if (typeof(evnt) == "function") {
    evnt.call(a);
}
15
ответ дан 24 November 2019 в 10:13
поделиться

Если вы используете это только для ссылки на функцию в onclick, это кажется очень плохой идеей. В целом встроенные события - плохая идея.

Я бы посоветовал следующее:

function addEvent(elm, evType, fn, useCapture) {
    if (elm.addEventListener) {
        elm.addEventListener(evType, fn, useCapture);
        return true;
    }
    else if (elm.attachEvent) {
        var r = elm.attachEvent('on' + evType, fn);
        return r;
    }
    else {
        elm['on' + evType] = fn;
    }
}

handler = function(){
   showHref(el);
}

showHref = function(el) {
   alert(el.href);
}

var el = document.getElementById('linkid');

addEvent(el, 'click', handler);

Если вы хотите вызвать ту же функцию из другого кода javascript, имитация щелчка для вызова функции - не лучший способ. Рассмотрим:

function doOnClick() {
   showHref(document.getElementById('linkid'));
}
0
ответ дан 24 November 2019 в 10:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: