Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   запуск скрипта с помощью идентификатора (https://javascript.ru/forum/misc/58137-zapusk-skripta-s-pomoshhyu-identifikatora.html)

BARABANTEMO 06.09.2015 22:12

запуск скрипта с помощью идентификатора
 
<textarea id="message" onKeyPress="return jilgeoves(this,event,'.geojilves');"></textarea>
<script type="text/javascript">
function imgjilves(t,th){var a=$(t).find("input.vesjilgeo");var lo=$($(th?th:a).find("input.vesjilgeo")).is(":checked");var e=t;lo?$(e).animate({"background-position-x":"0px","title":"ინგლისური კლავიატურის ჩართვა"},150,"linear"):$(e).animate({"background-position-x":"-28px","title":"ქართული კლავიატურის ჩართვა"},150,"linear");$(a).prop("checked",lo)}function jilgeoves(t,e,l){var checkbox=$("label"+l+" input.vesjilgeo");en={a:"ა",A:"ა",b:"ბ",B:"ბ",g:"გ",G:"გ",d:"დ",D:"დ",e:"ე",E:"ე",v:"ვ",V:"ვ",z:"ზ",Z:"ძ",t:"ტ",T:"თ",i:"ი",I:"ი",k:"კ",K:"კ",l:"ლ",L:"ლ",m:"მ",M:"მ",n:"ნ",N:"ნ",o:"ო",O:"ო",p:"პ",P:"პ",j:"ჯ",J:"ჟ",r:"რ",R:"ღ",s:"ს",S:"შ",u:"უ",U:"უ",f:"ფ",F:"ფ",q:"ქ",Q:"ქ",y:"ყ",Y:"ყ",c:"ც",C:"ჩ",w:"წ",W:"ჭ",x:"ხ",X:"ხ",h:"ჰ",H:"ჰ"};var e=e||window.event,c=e.keyCode||e.which,s=String.fromCharCode(c);if("`"==s)return checkbox.prop("checked",!checkbox.prop("checked")),imgjilves(l,l),!1;var r=eval("en."+s);return $(checkbox).is(":checked")?void 0==r?!0:($(t).val($(t).val()+r),!1):!0}
</script>
<label title="ინგლისური კლავიატურის ჩართვა" class="geojilves" onclick="imgjilves('.geojilves',this)" style="float:left; width:22px; height:18px; cursor:pointer; background:url('http://jil.do.am/che/001/img/001/geus.png') 0px 50% no-repeat;"><input checked="checked" style="display:none;" class="vesjilgeo" type="checkbox"></label>

как видите скрипт запускается этим
onKeyPress="return jilgeoves(this,event,'.geojilves');"

пожалуйста подскажите как сделать чтобы скрипт запускался по нажатию на блок с иденификатором id="message"
Спасибо

BETEPAH 06.09.2015 22:52

Цитата:

Сообщение от BARABANTEMO
как сделать чтобы скрипт запускался по нажатию на блок с иденификатором id="message"

заменить onKeyPress на onclick. А если надо чтоб срабатывал не при каждом клике, а при получении фокуса в textarea, то onfocus

BARABANTEMO 07.09.2015 00:07

BETEPAH, а как сделать чтоб onclick или onfocus срабатывал на id="message"

BARABANTEMO 07.09.2015 00:10

я делал так но не то
$("#message").click(function(){return jilgeoves(this,event,'.geojilves');});

nesnayka 07.09.2015 12:11

Цитата:

Сообщение от BARABANTEMO (Сообщение 387377)
BETEPAH, а как сделать чтоб onclick или onfocus срабатывал на id="message"

Вставить onclick(onfocus)="return jilgeoves(this,event,'.geojilves');" в тег с id="message". Или так, как вы и делали:
Цитата:

Сообщение от BARABANTEMO (Сообщение 387378)
я делал так но не то
$("#message").click(function(){return jilgeoves(this,event,'.geojilves');});

А почему не то?

BARABANTEMO 07.09.2015 12:39

nesnayka, а потому что скрипт не запускается посмотрите сами

nesnayka 07.09.2015 19:10

Цитата:

Сообщение от BARABANTEMO (Сообщение 387406)
nesnayka, а потому что скрипт не запускается посмотрите сами

Посмотрел.

<textarea id="message" onKeyPress="return jilgeoves(this,event,'.geojilves');"></textarea>

<script type="text/javascript">
function imgjilves(t,th){
  var a=$(t).find("input.vesjilgeo");
  var lo=$($(th?th:a).find("input.vesjilgeo")).is(":checked");
  var e=t;lo?$(e).animate({"background-position-x":"0px","title":"ინგლისური კლავიატურის ჩართვა"},150,"linear"):$(e).animate({"background-position-x":"-28px","title":"ქართული კლავიატურის ჩართვა"},150,"linear");$(a).prop("checked",lo);
}
function jilgeoves(t,e,l){
  var checkbox=$("label"+l+" input.vesjilgeo");
  en={a:"ა",A:"ა",b:"ბ",B:"ბ",g:"გ",G:"გ",d:"დ",D:"დ",e:"ე",E:"ე",v:"ვ",V:"ვ",z:"ზ",Z:"ძ",t:"ტ",T:"თ",i:"ი",I:"ი",k:"კ",K:"კ",l:"ლ",L:"ლ",m:"მ",M:"მ",n:"ნ",N:"ნ",o:"ო",O:"ო",p:"პ",P:"პ",j:"ჯ",J:"ჟ",r:"რ",R:"ღ",s:"ს",S:"შ",u:"უ",U:"უ",f:"ფ",F:"ფ",q:"ქ",Q:"ქ",y:"ყ",Y:"ყ",c:"ც",C:"ჩ",w:"წ",W:"ჭ",x:"ხ",X:"ხ",h:"ჰ",H:"ჰ"};
  var e=e||window.event,c=e.keyCode||e.which,s=String.fromCharCode(c);
  if("`"==s)return checkbox.prop("checked",!checkbox.prop("checked")),imgjilves(l,l),!1;
  var r=eval("en."+s);
  return $(checkbox).is(":checked")?void 0==r?!0:($(t).val($(t).val()+r),!1):!0;
}
$("#message").click(function(){alert(1);});
</script>

<label title="ინგლისური კლავიატურის ჩართვა" class="geojilves" onclick="imgjilves('.geojilves',this)" style="float:left; width:22px; height:18px; cursor:pointer; background:url('http://jil.do.am/che/001/img/001/geus.png') 0px 50% no-repeat;"><input checked="checked" style="display:none;" class="vesjilgeo" type="checkbox"></label>


Вполне себе нормально работает. При клике по texarea выводит 1.
Но кусок
$("#message").click(function(){return jilgeoves(this,event,'.geojilves');});

не будет работать сам по себе, т.к. ф-ция jilgeoves отслеживает нажатия клавиш и априори должна быть привязана к обработчику onKeyPress или onKeyDown/onKeyUp.

Давайте Вы нам расскажете, что вы хотите сделать, вообще. :)

BARABANTEMO 07.09.2015 22:20

я хочу сделать так чтобы данная функция переключения языков запускалась с помощью идентификатора #message так как я хочу поставить этот скрипт в личных сообщениях на ucoz а там нет textarea чтобы добавить в нём onKeyPress="return jilgeoves(this,event,'.geojilves');"

nesnayka 07.09.2015 23:16

Тогда вот так (стоит заметить, что аргументы у ф-ции я поубирал и присвоил нужным переменным значение внутри ф-ции):
<textarea id="message"></textarea>

<script type="text/javascript">
function imgjilves(t,th){
  var a=$(t).find("input.vesjilgeo");
  var lo=$($(th?th:a).find("input.vesjilgeo")).is(":checked");
  var e=t;lo?$(e).animate({"background-position-x":"0px","title":"ინგლისური კლავიატურის ჩართვა"},150,"linear"):$(e).animate({"background-position-x":"-28px","title":"ქართული კლავიატურის ჩართვა"},150,"linear");$(a).prop("checked",lo);
}
function jilgeoves(event){
  var t = document.getElementById('message');
  var e = event;
  var l = '.geojilves';
  var checkbox=$("label"+l+" input.vesjilgeo");
  en={a:"ა",A:"ა",b:"ბ",B:"ბ",g:"გ",G:"გ",d:"დ",D:"დ",e:"ე",E:"ე",v:"ვ",V:"ვ",z:"ზ",Z:"ძ",t:"ტ",T:"თ",i:"ი",I:"ი",k:"კ",K:"კ",l:"ლ",L:"ლ",m:"მ",M:"მ",n:"ნ",N:"ნ",o:"ო",O:"ო",p:"პ",P:"პ",j:"ჯ",J:"ჟ",r:"რ",R:"ღ",s:"ს",S:"შ",u:"უ",U:"უ",f:"ფ",F:"ფ",q:"ქ",Q:"ქ",y:"ყ",Y:"ყ",c:"ც",C:"ჩ",w:"წ",W:"ჭ",x:"ხ",X:"ხ",h:"ჰ",H:"ჰ"};
  var e=e||window.event,c=e.keyCode||e.which,s=String.fromCharCode(c);
  if("`"==s)return checkbox.prop("checked",!checkbox.prop("checked")),imgjilves(l,l),!1;
  var r=eval("en."+s);
  return $(checkbox).is(":checked")?void 0==r?!0:($(t).val($(t).val()+r),!1):!0;
}
window.onload=function(){
  var h = document.getElementById('message');
  h.onkeypress = jilgeoves;
}
</script>

<label title="ინგლისური კლავიატურის ჩართვა" class="geojilves" onclick="imgjilves('.geojilves',this)" style="float:left; width:22px; height:18px; cursor:pointer; background:url('http://jil.do.am/che/001/img/001/geus.png') 0px 50% no-repeat;"><input checked="checked" style="display:none;" class="vesjilgeo" type="checkbox"></label>


Теперь этому скрипту глубоко пофиг на все, лишь бы на странице был элемент с id="message", в котором он будет менять аглицкие буквы на грузинские и перед всем этим делом нажали грузинский флаг. ))

BARABANTEMO 07.09.2015 23:37

nesnayka, большое спасибо всё как всегда в точку думаю тему можно закрывать
да ещё на по следок я заменил
window.onload=function(){
  var h = document.getElementById('message');
  h.onkeypress = jilgeoves;
}

на
$(document).ready(function(){
  var h = document.getElementById('message');
  h.onkeypress = jilgeoves;
});

чтобы не ждать полной загрузки страницы - думаю всё верно
ещё раз спасибо!!!


Часовой пояс GMT +3, время: 18:08.