По сути, у меня есть флажок, который пользователь щелкает, если флажок был установлен, он должен установить cookie, чтобы форма отправлялась, когда пользователь нажимает ввод. И это так, на самом деле это работает отлично ... пока пользователь не выберет страницу из фокуса, открыв новую вкладку, окно, другое приложение, что угодно. Тогда он больше не отправляется при входе.
На самом деле он не только не отправляется при входе, но и при нажатии на него флажок также не меняется. Кто-нибудь знает, что здесь происходит? Это кажется странной проблемой, но она делает это и в Chrome, и в Firefox (другие не проверяли).
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name,"",-1);
}
var socc=readCookie("socc");
$('.submitonenter').click(function() {
if (socc == 'true') {
createCookie('socc','false',365);
$('#soecb').removeAttr("checked");
soechecked = false;
} else {
createCookie('socc','true',365);
$('#soecb').attr("checked", "checked");
soechecked = true;
}
});
if (socc == 'true') {
$('#soecb').attr('checked', 'checked');
soechecked = true;
}
var ctrlPressed = false;
$(window).keydown(function(evt) {
if (evt.which == 17 || evt.which == 18) { // ctrl or alt
ctrlPressed = true;
}
}).keyup(function(evt) {
if (evt.which == 17 || evt.which == 18) { // ctrl or alt
ctrlPressed = false;
}
});
$('body').delegate('#newmessagetext', 'keydown', function(e){
if (ctrlPressed == false && soechecked == true) {
if (e.keyCode == 13) {
e.preventDefault();
$('#submitpost').click();
}
}
});
ПРИМЕЧАНИЕ: delegate
необходимо, потому что я меняю текстовое поле и периодически нажимаю кнопку подтверждения.