Я искал на этом веб-сайте, а также нескольких других людей, чтобы найти ответ на этот вопрос, и хотя я нашел несколько вещей, я не нашел ничего, что бы полностью соответствовало моим требованиям.
Я разрабатываю форму для использования со службой по сбору средств, в которой люди могут выгравировать сообщение для каменных брусчатки.Так как это для университета, они хотят иметь возможность использовать греческие буквы в формах.Я нашел способ сделать это, ловя, когда пользователь вводит определенный ключ (@), и открывая диалоговое окно с просьбой выбрать греческую букву или отменить.Когда они это делают, он заменяет @ греческой буквой, которую они выбрали (или "", если они просто закрыли или отменили диалог).
Однако одна из самых больших проблем, с которыми я столкнулся, заключается в том, что послеВ этот момент фокус теряется, а пользователь в замешательстве.Я хочу вернуть фокус в то место, которое было до открытия диалогового окна.Это возможно?
Вот JS, который я использую:
//giving form engraving greek letter replacement code
var $greekLetters = $('<div class="greekModal"><ul><li><a href="#" class="close alpha"><img src="../../images/giving/alpha.gif" alt="Alpha" title="Alpha" /></a></li><li><a href="#" class="close beta"><img src="../../images/giving/beta.gif" alt="Beta" title="Beta" /></a></li><li><a href="#" class="close gamma"><img src="../../images/giving/gamma.gif" alt="Gamma" title="Gamma" /></a></li><li><a href="#" class="close delta"><img src="../../images/giving/delta.gif" alt="Delta" title="Delta" /></a></li><li><a href="#" class="close epsilon"><img src="../../images/giving/epsilon.gif" alt="Epsilon" title="Epsilon" /></a></li><li><a href="#" class="close zeta"><img src="../../images/giving/zeta.gif" alt="Zeta" title="Zeta" /></a></li><li><a href="#" class="close eta"><img src="../../images/giving/eta.gif" alt="Eta" title="Eta" /></a></li><li><a href="#" class="close theta"><img src="../../images/giving/theta.gif" alt="Theta" title="Theta" /></a></li><li><a href="#" class="close iota"><img src="../../images/giving/iota.gif" alt="Iota" title="Iota" /></a></li><li><a href="#" class="close kappa"><img src="../../images/giving/kappa.gif" alt="Kappa" title="Kappa" /></a></li><li><a href="#" class="close lambda"><img src="../../images/giving/lambda.gif" alt="Lambda" title="Lambda" /></a></li><li><a href="#" class="close mu"><img src="../../images/giving/mu.gif" alt="Mu" title="Mu" /></a></li><li><a href="#" class="close nu"><img src="../../images/giving/nu.gif" alt="Nu" title="Nu" /></a></li><li><a href="#" class="close xi"><img src="../../images/giving/xi.gif" alt="Xi" title="Xi" /></a></li><li><a href="#" class="close omicron"><img src="../../images/giving/omicron.gif" alt="Omicron" title="Omicron" /></a></li><li><a href="#" class="close pi"><img src="../../images/giving/pi.gif" alt="Pi" title="Pi" /></a></li><li><a href="#" class="close rho"><img src="../../images/giving/rho.gif" alt="Rho" title="Rho" /></a></li><li><a href="#" class="close sigma"><img src="../../images/giving/sigma.gif" alt="Sigma" title="Sigma" /></a></li><li><a href="#" class="close tau"><img src="../../images/giving/tau.gif" alt="Tau" title="Tau" /></a></li><li><a href="#" class="close upsilon"><img src="../../images/giving/upsilon.gif" alt="Upsilon" title="Upsilon" /></a></li><li><a href="#" class="close phi"><img src="../../images/giving/phi.gif" alt="Phi" title="Phi" /></a></li><li><a href="#" class="close chi"><img src="../../images/giving/chi.gif" alt="Chi" title="Chi" /></a></li><li><a href="#" class="close psi"><img src="../../images/giving/psi.gif" alt="Psi" title="Psi" /></a></li><li><a href="#" class="close omega"><img src="../../images/giving/omega.gif" alt="Omega" title="Omega" /></a></li></ul></div>')
.dialog({
autoOpen: false,
title: 'Select Greek Letter',
modal: true,
showCloseLabel: false,
close: function(event, ui) {
$("input.engraving").val(function(i, val) {
return val.replace(/@/,"");
$( ".greekModal" ).dialog( "close" );
});
},
buttons: {
Cancel: function() {
$( this ).dialog( "close" );
}
}
});
$(".greekModal a.alpha").click(function() {
$("input.engraving").val(function(i, val) {
return val.replace(/@/,"Α");
});
return false;
});
$(".greekModal a.beta").click(function() {
$("input.engraving").val(function(i, val) {
return val.replace(/@/,"Β");
});
return false;
});
$(".greekModal a.gamma").click(function() {
$("input.engraving").val(function(i, val) {
return val.replace(/@/,"Γ");
});
return false;
});
$(".greekModal a.delta").click(function() {
$("input.engraving").val(function(i, val) {
return val.replace(/@/,"Δ");
});
return false;
});
$(".greekModal a.epsilon").click(function() {
$("input.engraving").val(function(i, val) {
return val.replace(/@/,"Ε");
});
return false;
});
$(".greekModal a.zeta").click(function() {
$("input.engraving").val(function(i, val) {
return val.replace(/@/,"Ζ");
});
return false;
});
$(".greekModal a.eta").click(function() {
$("input.engraving").val(function(i, val) {
return val.replace(/@/,"Η");
});
return false;
});
$(".greekModal a.theta").click(function() {
$("input.engraving").val(function(i, val) {
return val.replace(/@/,"Θ");
});
return false;
});
$(".greekModal a.iota").click(function() {
$("input.engraving").val(function(i, val) {
return val.replace(/@/,"Ι");
});
return false;
});
$(".greekModal a.kappa").click(function() {
$("input.engraving").val(function(i, val) {
return val.replace(/@/,"Κ");
});
return false;
});
$(".greekModal a.lambda").click(function() {
$("input.engraving").val(function(i, val) {
return val.replace(/@/,"Λ");
});
return false;
});
$(".greekModal a.mu").click(function() {
$("input.engraving").val(function(i, val) {
return val.replace(/@/,"Μ");
});
return false;
});
$(".greekModal a.nu").click(function() {
$("input.engraving").val(function(i, val) {
return val.replace(/@/,"Ν");
});
return false;
});
$(".greekModal a.xi").click(function() {
$("input.engraving").val(function(i, val) {
return val.replace(/@/,"Ξ");
});
return false;
});
$(".greekModal a.omicron").click(function() {
$("input.engraving").val(function(i, val) {
return val.replace(/@/,"Ο");
});
return false;
});
$(".greekModal a.pi").click(function() {
$("input.engraving").val(function(i, val) {
return val.replace(/@/,"Π");
});
return false;
});
$(".greekModal a.rho").click(function() {
$("input.engraving").val(function(i, val) {
return val.replace(/@/,"Ρ");
});
return false;
});
$(".greekModal a.sigma").click(function() {
$("input.engraving").val(function(i, val) {
return val.replace(/@/,"Σ");
});
return false;
});
$(".greekModal a.tau").click(function() {
$("input.engraving").val(function(i, val) {
return val.replace(/@/,"Τ");
});
return false;
});
$(".greekModal a.upsilon").click(function() {
$("input.engraving").val(function(i, val) {
return val.replace(/@/,"Υ");
});
return false;
});
$(".greekModal a.phi").click(function() {
$("input.engraving").val(function(i, val) {
return val.replace(/@/,"Φ");
});
return false;
});
$(".greekModal a.chi").click(function() {
$("input.engraving").val(function(i, val) {
return val.replace(/@/,"Χ");
});
return false;
});
$(".greekModal a.psi").click(function() {
$("input.engraving").val(function(i, val) {
return val.replace(/@/,"Ψ");
});
return false;
});
$(".greekModal a.omega").click(function() {
$("input.engraving").val(function(i, val) {
return val.replace(/@/,"Ω");
});
return false;
});
$(".greekModal a.close").click(function() {
$( ".greekModal" ).dialog( "close" );
return false;
});
if ($.browser.mozilla) {
$("input.engraving").keypress(function(event) {
if(event.charCode == "64")
{
$greekLetters.dialog('open');
}
});
} else {
$("input.engraving").keypress(function(event) {
if(event.keyCode == "64")
{
$greekLetters.dialog('open');
}
});
}
});
Соответствующий html:
<li><label class="desc" for="engraving_first_line">First Line: </label>
<input class="engraving" type="text" name="engraving_first_line" id="engraving_first_line" size="15" maxlength="15" /> (Maximum characters: 15)</li>
<li><label class="desc" for="engraving_second_line">Second Line: </label>
<input class="engraving" type="text" name="engraving_second_line" id="engraving_second_line" size="15" maxlength="15" /> (Maximum characters: 15)</li>
<li><label class="desc" for="engraving_third_line">Third Line: </label>
<input class="engraving" type="text" name="engraving_third_line" id="engraving_third_line" size="15" maxlength="15" /> (Maximum characters: 15)</li>
<li><label class="desc" for="engraving_fourth_line">Fourth Line: </label>
<input class="engraving" type="text" name="engraving_fourth_line" id="engraving_fourth_line" size="15" maxlength="15" /> (Maximum characters: 15)</li>