- ¥Ð¥Ã¥¯¥¢¥Ã¥×°ìÍ÷
- ¥½¡¼¥¹ ¤òɽ¼¨
- prototype.js¤ÎÍøÍÑÎã¡§¥Þ¥¦¥¹¥ª¡¼¥Ð¡¼»þ¤Ë¥Æ¥¥¹¥È¤òÊÔ½¸¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ë ¤Ïºï½ü¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
- 1 (2006-10-29 (Æü) 12:43:19)
- 2 (2006-10-29 (Æü) 18:06:50)
prototype.js¤ÎÍøÍÑÎã¡§¥Þ¥¦¥¹¥ª¡¼¥Ð¡¼»þ¤Ë¥Æ¥¥¹¥È¤òÊÔ½¸¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ë?
¤ªÌ䤤¹ç¤ï¤»¥Õ¥©¡¼¥à¤Ç¤Ï³Îǧ²èÌ̤¬É½¼¨¤µ¤ì¤ë¤³¤È¤¬Â¿¤¤¤Ç¤¹¤¬¡¢¤½¤Î²èÌ̾å¤Çɽ¼¨¤µ¤ì¤ë³Æ¥Ç¡¼¥¿¤ËÂФ·¤Æ¥Þ¥¦¥¹¥ª¡¼¥Ð¡¼¤¹¤ë¤È¨¤½¤Î¾ì¤Ç½¤Àµ¤Ç¤¤ë¤ÈÊØÍø¤«¤Ê¤È»×¤¤¡¢¤½¤ÎÊýË¡¤òõ¤·¤Æ¡¢¼ÂÁõ¤·¤Æ¤ß¤Þ¤·¤¿¡£Google Calendar¤ÎͽÄê¾ÜºÙÊÔ½¸²èÌÌ¤ÎµóÆ°¤È¥¤¥á¡¼¥¸¤·¤Æ¤¤¤ë¤³¤È¤ÏƱ¤¸¤Ç¤¹¡£
ºÇ½é¤Ë³Îǧ²èÌ̤ÎHTML¤ÎÎã¤ò¼¨¤·¤Þ¤¹¡Ê¤´¤¯¤´¤¯´Êñ¤Ë¡Ë
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="text/javascript" src="prototype.js"></script> </head> <body> <table> <tr> <td>²ñ¼Ò̾</td><td>¥¢¡¼¥¯¥¦¥§¥Ö</td> </tr> <tr> <td>¤ªÌ¾Á°</td><td>¿ÊÃÏ</td> </tr> </table> <form action="" method="post"> <input type="hidden" name="company" value="¥¢¡¼¥¯¥¦¥§¥Ö" /> <input type="hidden" name="name" value="¿ÊÃÏ" /> <input type="submit" name="submit" value="Á÷¿®" /> </form> </body> </html>
²ñ¼Ò̾¤È¤ªÌ¾Á°¤È¤¤¤¦Æó¤Ä¤Î¹àÌܤ¬É½¼¨¤µ¤ì¡¢hidden¥Ñ¥é¥á¡¼¥¿¤È¤·¤Æ¤â»ý¤Ã¤Æ¤¤¤ë¤È¤¤¤¦Èó¾ï¤Ë¥·¥ó¥×¥ë¤ÊÎã¤Ç¤¹¡£¤³¤Î²ñ¼Ò̾¤È¤ªÌ¾Á°¤ÎÃÍ¡¢Îã¤Ç¸À¤¨¤Ð¡¢¥¢¡¼¥¯¥¦¥§¥Ö¤È¿ÊÃϤ˥ޥ¦¥¹¥ª¡¼¥Ð¡¼¤·¤¿»þ¤Ë¡¢¤½¤ì¤¾¤ì¤¬Ã±¤Ê¤ë¥Æ¥¥¹¥Èɽ¼¨¤«¤é¥Æ¥¥¹¥È¥Ü¥Ã¥¯¥¹¤ËÊѲ½¤¹¤ë¤è¤¦¤Ë¤·¤¿¤¤¡£¤½¤·¤Æ¡¢Ãͤνñ¤´¹¤¨¤ò¹Ô¤¤¡¢¤½¤Î¤Þ¤ÞÁ÷¿®¥Ü¥¿¥ó¤ò²¡¤¹¤È¤ªÌ䤤¹ç¤ï¤»¥Õ¥©¡¼¥à¥×¥í¥°¥é¥à¤ËÂФ·¤Æ½ñ¤´¹¤¨¤¿ÃͤòÁ÷¿®¤·¤¿¤¤¡£¤³¤³¤Þ¤Ç¤¬º£²ó¤ä¤ê¤¿¤¤¤³¤È¤Ç¤¹¡£prototype.js¤ò»È¤¦¤Î¤ÇËÁƬ¤Ç¥í¡¼¥É¤·¤Æ¤ª¤¤Þ¤¹¡£¤Þ¤¿¡¢Ê¸»ú¥³¡¼¥É¤ÏUTF-8¤Ë¤·¤Æ¤ª¤¤Þ¤¹¡£
¼¡¤Ë¡¢¥Þ¥¦¥¹¥ª¡¼¥Ð¡¼¤òÊ䤹¤ë¤¿¤á¤ËUI¤Î½àÈ÷¤ò¤·¤Þ¤¹¡£
<tr> <td>²ñ¼Ò̾</td><td id="company_val">¥¢¡¼¥¯¥¦¥§¥Ö</td> </tr> <tr> <td>¤ªÌ¾Á°</td><td id="name_val">¿ÊÃÏ</td> </tr> ¡§ ¡§ <input type="hidden" id="company" name="company" value="¥¢¡¼¥¯¥¦¥§¥Ö" /> <input type="hidden" id="name" name="name" value="¿ÊÃÏ" />
¤³¤³¤Ç¤Ïñ½ã¤Ë³ÆÃͤò³ÊǼ¤¹¤ë¥»¥ë¤ÈÃͤòÊÝ»ý¤·¤Æ¤¤¤ëhidden¥¿¥°¤òÆÃÄꤹ¤ë¤¿¤á¤ÎID¤ò¤Õ¤Ã¤Æ¤¤¤Þ¤¹¡£
¼¡¤Ë¡¢¥Þ¥¦¥¹¥ª¡¼¥Ð¡¼¤Ë¤è¤Ã¤Æ¥Æ¥¥¹¥È¥Ü¥Ã¥¯¥¹¤ËÊѹ¹¡¢¥Õ¥©¡¼¥«¥¹¤¬Â¾¤ËÁ«°Ü¤¹¤ë»þ¤Ëɽ¼¨ÃͤÈhiddenÃͤÎÊѹ¹¤ò¹Ô¤¦¥¯¥é¥¹(EditableValue?)¤òÄêµÁ¤·¤Þ¤¹¡£
<script type="text/javascript"> var EditableValue = Class.create(); EditableValue.prototype = { initialize: function(target_id) { this.text = $(target_id); this.input = document.createElement('input'); this.input.type = "text"; this.text.parentNode.appendChild(this.input); var hidden_id = this.text.id.substr(0, this.text.id.indexOf('_')); this.hidden = $(hidden_id); Event.observe(this.text, 'mouseover', this.enableInput.bindAsEventListener(this), false); Event.observe(this.input, 'blur', this.disableInput.bindAsEventListener(this), false); Element.show(this.text); Element.hide(this.input); }, enableInput: function() { this.input.value = this.text.innerHTML; Element.toggle(this.text, this.input); Field.focus(this.input); }, disableInput: function() { this.text.innerHTML = this.input.value; this.hidden.value = this.input.value; Element.toggle(this.text, this.input); }, }; </script>
initialize¡¢enableInput¡¢disableInput¤Ë¤Ï¤½¤ì¤¾¤ì¡¢EditableValue?¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¡¢¥Þ¥¦¥¹¥ª¡¼¥Ð¡¼»þ¤Ëµ¯Æ°¤µ¤ì¤ë¥á¥½¥Ã¥É¡¢¥Õ¥©¡¼¥«¥¹¤¬Â¾¤ËÁ«°Ü¤¹¤ë»þ¤Ëµ¯Æ°¤µ¤ì¤ë¥á¥½¥Ã¥É¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£
initialize¤Ç¤Ï¡¢ÅϤµ¤ì¤¿¥¿¡¼¥²¥Ã¥È¤ÎID(Îã¤Ç¤Ïcompany_val¤äname_val)¤«¤éprototype.js¤Î$()¥á¥½¥Ã¥É¤ò»È¤Ã¤ÆDOM¤ÎElement¥ª¥Ö¥¸¥§¥¯¥È¤ò¼èÆÀ¤·¤Æ¡¢this.text¤È¤·¤Æ¥»¥Ã¥È¤·¤Þ¤¹¡£¤Þ¤¿¡¢input¥¿¥°¤ÎElement¥ª¥Ö¥¸¥§¥¯¥È¤òÄêµÁ¤·¤Æ¡¢this.text¤Î¿Æ¤Î»Ò¡Ê¤Ä¤Þ¤ê¤Ïthis.text¤Î·»Äï¡Ë¤È¤·¤Æthis.input¤È¤·¤Æ¥»¥Ã¥È¤·¤Þ¤¹¡£ÃͤòÊÝ»ý¤·¤Æ¤¤¤ëhidden¤ÎElement¥ª¥Ö¥¸¥§¥¯¥È¤Îid¤ò¥¿¡¼¥²¥Ã¥È¤ÎID¤«¤éµá¤á¤Æ(Îã¤Ç¤Ï¡¢substring¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æcompany_val¡¢name_val¤«¤é¤½¤ì¤¾¤ìcompany¡¢name¤òºîÀ®¤·¤Æ¤¤¤Þ¤¹¡Ë¡¢$()¥á¥½¥Ã¥É¤ò»È¤Ã¤ÆÅö³ºhidden¥ª¥Ö¥¸¥§¥¯¥È¤òthis.hidden¤È¤·¤Æ¥»¥Ã¥È¤·¤Þ¤¹¡£
¤µ¤é¤Ë¡¢EventListener?¤òÍøÍѤ·¤Æ¡¢this.text¤ËÂФ·¤Æmouseover¥¤¥Ù¥ó¥È¤¬È¯À¸¤·¤¿¾ì¹ç¤ËenableInput¤ËÄêµÁ¤·¤¿¥á¥½¥Ã¥É¤òµ¯Æ°¤¹¤ë¤è¤¦¤Ë¡¢this.input¤ËÂФ·¤Æblur¥¤¥Ù¥ó¥È¤¬È¯À¸¤·¤¿¾ì¹ç¤ËdisableInput¤ËÄêµÁ¤·¤¿¥á¥½¥Ã¥É¤òµ¯Æ°¤¹¤ë¤è¤¦¤Ë¥»¥Ã¥È¤·¤Þ¤¹¡£
initialize¤Ç¤ÏºÇ¸å¤Ë¡¢this.text¤òɽ¼¨¡¢this.input¤òÈóɽ¼¨¤Ë¥»¥Ã¥È¤·¤Þ¤¹¡£
¥Þ¥¦¥¹¥ª¡¼¥Ð¡¼¥¤¥Ù¥ó¥È¤¬this.text¤ËÂФ·¤ÆÈ¯À¸¤·¤¿¾ì¹ç¡¢enableInput¤ËÄêµÁ¤·¤¿¥á¥½¥Ã¥É¤¬¸Æ¤Ð¤ì¤Þ¤¹¡£¤³¤Î¥á¥½¥Ã¥É¤Ç¤Ï¡¢this.input¤ÎÃͤËthis.text¤¬ÊÝ»ý¤¹¤ëÃ͡ʡḽºßɽ¼¨¤·¤Æ¤¤¤ëÃ͡ˤò¥»¥Ã¥È¤·¡¢this.input¤òɽ¼¨¡¢this.text¤òÈóɽ¼¨¤ËÀÚ¤êÂØ¤¨¤Æ¤¤¤Þ¤¹¡£
¥Õ¥©¡¼¥«¥¹¤¬this.input¤«¤é³°¤ì¤¿¾ì¹ç¡¢disableInput¤ËÄêµÁ¤·¤¿¥á¥½¥Ã¥É¤¬¸Æ¤Ð¤ì¤Þ¤¹¡£¤³¤Î¥á¥½¥Ã¥É¤Ç¤Ï¡¢this.input¤ÎÃͤòthis.text¤¬ÊÝ»ý¤¹¤ëÃͤÈthis.hidden¤ÎÃͤ˥»¥Ã¥È¤·¡¢this.input¤òÈóɽ¼¨¡¢this.text¤òɽ¼¨¤ËÀÚ¤êÂØ¤¨¤Æ¤¤¤Þ¤¹¡£
ºÇ¸å¤Ë¡¢¤³¤ÎEditableValue?¥¯¥é¥¹¤Ë¤½¤ì¤¾¤ì¤Î¥¿¡¼¥²¥Ã¥ÈID¤òÅϤ·¤Ænew¤·¤Þ¤¹¡£
<script type="text/javascript"> new EditableValue('company_val'); new EditableValue('name_val'); </script>
°Ê¾å¤Ç¡¢¥Þ¥¦¥¹¥ª¡¼¥Ð¡¼¤Ë¤è¤Ã¤ÆÅö³ºÃͤ¬ÊÔ½¸²Äǽ¤Ë¤Ê¤ê¡¢¥Õ¥©¡¼¥«¥¹¥¢¥¦¥È¤Ë¤è¤Ã¤ÆÊÔ½¸¤·¤¿Ãͤˤè¤Ã¤ÆÉ½¼¨¡¢¤ª¤è¤Óhidden¤Ë¥»¥Ã¥È¤µ¤ì¤¿Ãͤ¬Êѹ¹¤µ¤ì¤Þ¤¹¡£JavaScript¤ò²¾¤ËOff¤Ë¤·¤¿¥¯¥é¥¤¥¢¥ó¥È¤Ç¤¢¤Ã¤Æ¤â¡¢Ã±¤Ë¤³¤Î¥Þ¥¦¥¹¥ª¡¼¥Ð¡¼¤Ë¤è¤ëÊÔ½¸¤¬»È¤¨¤Ê¤¯¤Ê¤ë¤À¤±¤Ç½¾Íè¤Îư¤¤ÏÊݾ㤵¤ì¤Þ¤¹¡Ê¡á¥Ç¥°¥ì¡¼¥É²Äǽ¤ÊAjax¡Ë¡£
º£²ó¤ÎÎã¤Î¤è¤¦¤Ë¥¯¥é¥¹¤ÈEventListener?¤ò»È¤¦¤È¡¢²¼µ¤Î¤è¤¦¤Ë¥¿¡¼¥²¥Ã¥È¤Î¥¿¥°¤ËÂФ·¤Æ¥¤¥Ù¥ó¥È¤òµ½Ò¤·¤Ê¤¯¤Æ¤âñ¤Ëid¤ò¿¶¤ë¤À¤±¤Ç¥³¥ó¥È¥í¡¼¥ë²Äǽ¤Ë¤Ê¤ë¤¿¤á¡¢HTML¤Ï±ø¤ì¤º¡¢¥¤¥Ù¥ó¥È¤Ë¤è¤ëÁ«°Ü¤â¥¯¥é¥¹Æâ¤Ç½¸Ãæ´ÉÍý¤Ç¤¤Æ¹½ÃÛ¤¬¤È¤Æ¤â³Ú¤Ë¤Ê¤ê¤Þ¤¹¡£
<tr> <td>²ñ¼Ò̾</td><td id="company_val" onmouseover="hoge(this)">¥¢¡¼¥¯¥¦¥§¥Ö</td> </tr> <tr> <td>¤ªÌ¾Á°</td><td id="name_val" onmouseover="hoge(this)">¿ÊÃÏ</td> </tr>
»²¹Í †
Êä †
mouseover¤Èblur¤ÎÁȤ߹ç¤ï¤»¤À¤È¡¢FireFox?¤Ç¤Ï(¤ª¤è¤ÓGecko-engine¤Î¥Ö¥é¥¦¥¶¤Ç¤Ï¡Ë
Permission denied to set property XULElement.selectedIndex NS_ERROR_XPC_JS_THREW_STRING
¤È¤¤¤¦Exception¤¬È¯À¸¤·¤Þ¤¹¡£
http://groups.google.ca/group/netscape.public.mozilla.dom/browse_thread/thread/821271ca11a1bdbf/46c87b49c026246f?lnk=st&q=+focus+nsIAutoCompletePopup+selectedIndex&rnum=1
http://www.macridesweb.com/oltest/FocusProblems.html
ÂбþÊýË¡¤È¤·¤Æ¤Ï¡¢form¥¿¥°¤ËÂФ·¤Æ¡¢autocomplete="off"¤ò»ØÄꤷ¤Þ¤¹¡£
º£²ó¤ÎÎã¤Ç¤Ï
<form method="post" action="" autocomplete="off">
¤È¤·¤Þ¤¹¡£