Javascript

prototype.js������jQuery������돪����������������������������������쏢���������㏢�­�돫�������

Rails ������»�����������������������������������¡�\���\���\���\���\��������� prototype.js ���̏�����������¹��Џ��������������������������������¹��¡��������¹���̏�¡����������������Џ����� jQuery ������»��������������ď��������������������³��������������������������·�����������¾�����򏪡���������¹������������»������»��������Ï�¡����Ώ����ď��������������³�����������������������������ď��������·�����ď��������·���������¹�������������������폢����¡���¡����������Ï��������µ���µ�����ď��������������¹��¡�

�����������������Ï��³����������������²��я��������¾������»��������Ï��������­�������������������¹��¡�

�����������������Ώ��������¾����������»��������������ď�����¾���¹��������� $() ����\³\���\���\���\���\������¹�������������������³���������������Ï��������·������ jQuery �����Ï����� $() �����ҏ����ӏ��­��¹��𡯏��������³������������²���·������������­���������¹���¼��¡����������������������� $() ���������¹���̏�¡�prototype.js ������¾���¹����������������������������� document.getElementByID ��������ޏ�����������\·\������¼\���\«\���\���������DOM\���\���\���\��\���\��������ҏ����ӏ��¹�������������Ð���·��¡�jQuery ������¾���¹���������������¼«������\���\���\���\��\���\�������jQuery\���\���\���\��\���\������������ҏ����ӏ��·���������¹��¡�

prototype.js��¡�DOM\���\���\���\��\���\��������ҏ����ӏ��¹
jQuery��¡�������¼«������\���\���\���\��\���\�������jQuery\���\���\���\��\���\������������ҏ����ӏ��¹

�����ď�������¡��¾�������������«������������������������������²��ď��������«��돢���Ï��·���������­���������¹��¡��ӏ�����������id����ߏ�����������»������������¹���������������­������#�����؏��ޏ������������������������������������������ޏ��폢¡ߏ��������«��������

���½���³������¼«����̏�����\���\���\���\���\���\¹���������·�����������������������������������쏢�­�����ď�����������»�ߏ��������������¹���쏢�쏪����𡯏��Ð���³���������������Ï�����id����ߏ�����������class����ߏ��������̏������������ď��������·���������·�����������Ï�¡�

<div id="hoge">id����ߏ���������������������</div>
<div class="fuga">class����ߏ���������������������</div>

���³������������ prototype.js ������ jQuery ��������·�����Ï����������������������Ï��·�����ď��������������������������·�����������Ï��«����

prototype.js (1.6.0.3)
console.debug( $("hoge") ); // <div id="hoge">

console.debug( $("hoge").innerHTML ); // id����ߏ���������������������
$("hoge").innerHTML = "prototype.js ������id����ߏ�����������¹¹���·�����ď���������";
console.debug( $("hoge").innerHTML ); // prototype.js ������id����ߏ�����������¹¹���·�����ď���������

console.debug( $$(".fuga") ); // [ div.fuga ]

jQuery (1.4.2)
console.debug( $("#hoge") ); // [ div#hoge ]

console.debug( $("#hoge").html() ); // id����ߏ���������������������
$("#hoge").html("jQuery ������id����ߏ�����½��Џ��­��¹��𡯏����ď���������");
console.debug( $("#hoge").html() ); // jQuery ������id����ߏ�����½��Џ��­��¹��𡯏����ď���������

console.debug( $(".fuga") ); // [ div.fuga ]

prototype.js��¡�#�����������؏��ޏ�������������¡�DOM\���\���\���\��\���\���������\���\½\���\���������\��\���\���\���\����»�����𡯏�����
jQuery��¡�#�����ҏ����؏��ޏ�������¡򏩡���¼«������\���\���\���\��\���\�������jQuery\���\���\���\��\���\�����������������������\���\½\���\���������������¼���

���½�������돪�³�돢�������������³�����я������돫����������̏����������������¹��¡�\���\­\¹\���\���\��폢�¼\���������¾���¹�����¡�

<input type="text" value="data_1" id="input" />

prototype.js (1.6.0.3)
console.debug( $("input").value ); // data_1
$("input").value = "data_2";
console.debug( $("input").value ); // data_2

jQuery (1.4.2)
console.debug( $("#input").val() ); // data_1
$("#input").val("data_2");            
console.debug( $("#input").val() ); // data_2

prototype.js��¡�value ���̏��½����������������»�����𡯏�����
jQuery��¡�value ������������������������ val ������»��������Ï�¡��������������³���·����������

�����������������Ï��³��������������¡��ӏ����������폢�³������½������������������Ï����������������я��������������ޏ��폢¡ߏ����������������������������������������������Ï�����µ��������ҏ��������ޏ��������·�����������á�ӏ��������������������ď��������­���������³������\��⏢�¼\��������ҏ��«������»�ߏ�����½Ð���·���������·�����������á������

JavaScript���������Џ�ď�ԏ�����\¹\³���¼\��

������������������������\���\���\��ď��¼\��я����Џ��ޏ�����¹��ԏ�����������������������������¹���µ������̏�����¾������������������«���������������¹���������������¹��������¡�������

\���\���\��ď��¼\���¹���µ���4�����䏪���䏢��JavaScript ������³��������� \���\���\���\���\���\���\���\��я�¡� - Hatena::Engineering

�����ҏ��«��������������¡�JavaScript ���������Џ�ď�ԏ�����\¹\³���¼\�ߏ������������������������������������������·�����ď�¡�JavaScript ���������������������«������������������������������������������»������������������������������������¹���ޏ�������¡񏪡�����³���������«������������������������»��ӏ��̏����ď���������������»²¹������������������������������¹����

�����������������Ï��³��������������¡��ӏ����쏢���쏢������¡ߏ�����»�ߏ����������ď����Џ�ď�ԏ�����\¹\³���¼\�ߏ�����������������������\���\�����¡򡭏����ď�ԏ�����������������µ������·�����ď����Џ�ď�ԏ����������������Ï����������Ï������������·�������������������������������폢���������������������Ï��������������¹��¡�

var foo = 1;
(function () {
  console.log(foo); // undefined
  var foo = 2;
  console.log(foo); // 2
})();
console.log(foo); // 1

���³��������������¡�돪�²¼����������ޏ��������������·���������������¹��¡��������ď�ԏ����������������������������Џ�ď�ԏ��̏��������������µ��������������������¡��½��������������������돪�½��������� undefined ������½��������²½���µ������������¾��؏����ӏ����������������������я��������¹������������¡��³�������������������ď�ԏ�����������������\������¼\«\��������������Џ�ď�ԏ�����������������¡񡭏����ď�ԏ����ҏ�������ޏ��������������µ�������������������������������������¹��¡�

var foo = 1;
(function () {
  var foo;
  console.log(foo); // undefined
  foo = 2;
  console.log(foo); // 2
})();
console.log(foo); // 1

�����������������Ώ������������ď�ԏ����������������Џ�ď�ԏ����ҏ��������������·������������¾���¹�����¡񡭏����ď�ԏ�����³�돢���돫�������³�돢����\¹\³���¼\�ߏ��������� foo ���̏����̏����Џ��µ���������������¹��¡����������������������ѡ������ď�ԏ����ҏ�������ޏ��������������½����������������½��Џ��­��¹��𡯏�����������������¾��؏����ӏ��������¹��¡�

var foo = 1;
(function () {
  console.log(foo); // 1
  foo = 100;
  console.log(foo); // 100
})();
console.log(foo); // 100

onsubmit������onclick������½������������ҏ��������������µ���»�����������򏪳���(return false)

��������������¡�\���\���\��������� onclick ���������«��¡�\���\��폢�¼\��������� onsubmit ���������«���¹���������������������������������������¹���«��¡��½��������������¡���²��я��������³�����я����������������������³�����������ҏ����������������Ï�����»�ߏ����������ď����я��������¹��¡�
  • \���\­\¹\������̢���؏����������������ď�����·���¹��Ï�����½Ð���·������½������������ҏ��������������¹������

  • \���\­\¹\������̢���؏��������������������«�����������ď�����\��\���\·\���\��я�����¼���¹��ԏ��¹������

����onsubmit ���������ӏ��������������� false ������������ submit ������½����������̏��������������µ�����������������������������Ï�¡ߏ�����»�ߏ��������������µ���������������������³�����я���������������������½��Џ����������������Ώ��������·�����ď�¡����������ď�����������\·\���\��\������������¹��¡�

<script type="text/javascript">
    function blank_check() {
        if (document.getElementById('name').value == "") {
            alert("Ž���ޭ޳Ž���Ž���Ž���Ž�돢�³(Ž��Ρ��Ž���)Ž��� Ž���ޭ޳Ž���Ž���Ž���-���³(Ž��Ρ��Ž���)Ž���");
            return false;
        } else {
            return true;
        }
    }
</script>

<form action="..." onsubmit="blank_check()">
    <input type="text" id="name">
    <input type="submit" value="¼�������">
</form>

�����ď�������¡��³������������������³����«������\���\­\¹\������̢���؏������������­������·���¹��Ï��������½¼�����µ����������������������������¡��½����������������½����������̏��������������»�����돢������ď�������я��������·���������������������·�����ď�¡�¡�½������������ҏ��������������µ���»��������������������¡�\���\���\���\���\���\���\���\��� (onsubmit) ���������ӏ��������������������·������ false �����ҏ����ӏ��·�����������²���������������������������ޏ����������������������Ï��������¹��¡��������������������³�����я������������������������·�����������²���������Ð������򏫳���������¹��¡�

<form action="..." onsubmit="return blank_check()"> // return
    <input type="text" id="name">
    <input type="submit" value="¼�������">
</form>

onclick ��������¡��³���������������Ï����� return false �����ҏ����؏��ޏ������������������������������ޏ����������򏪿³���������¹��¡�\���\���\���\���\���\���\���\��� (oncick) ���������ӏ��������������������·������ false �����ҏ����ӏ��¹���³�����������������䏪������������돢돫���\���\���\���\���»��Џ�������돢돫��������ҏ��������������¹���������³����������½Ð���������������¹��¡�

<a href="javascript:void(0)" onclick="hoge();return false;">click</a>

�������ď�ԏ��������������������ӏ�������������������¡�\���\���\���\���\���\���\���\������������������ӏ����������������������������������Ï������̏����������Ï������돫������Ï����я��������¹������������¡����������������Ï��«��¡�\���\���\���\�����̡������ď�ԏ��������ӏ����������������������я��«���«��������������������������¡�\���\���\���\���\���\���\���\������������ӏ����������� (return xxx) ���·���«���«���������������������폢��¾��䏢�·������돫����������������������«���������������»�����я���µ��������ҏ����؏��ޏ����������������������������������������������Ï��������·�����ď��������������¹��¡�

jQuery�����������ď�ԏ����쏪���ҏ�����\��\���\���\���\��я����ҏ����쏪���ҏ��·�����ď�����³«»��������䏢����½��쏪�»�����䏢����·��»»���·������·���²���������\���\��폢�¼\��������������Џ�����������������������������������������½��Џ����������ď��¼

���³�����я�����������������¡򏪴·�돪�µ�������������������¼���������������²¼���µ������w

<script type="text/javascript">

    // �����ď�ԏ����쏪����²������½������\��\���\���\���\��я�����ID: dateform
    $('#dateform').change(function(){
        $('#dateform option:selected').each(function(){

            // ²��ď��������«���·������³«»��������䏢¡�½��쏪�»�����䏢����·������������������������������µ������
            start = 'xxx';
            end = 'yyy';
        });
        $('#start_date').val(start);
        $('#end_date').val(end); // value ������������������������������ val
    });
</script>


jQuery �����������̏��������¹������������¡����ď�����»���������·������������������������������������²��я���������㏢�������������������������������������«�������������������������̏�돢������������ď������������������¹��¡�������������������¡�read ������ value \���\½\���\�����������¡�write ���� val \���\½\���\������������«��������������������¡�¡�����������������\���\���������������������������µ������̏��·���������¹��¡�����������²���������³Ð��𡯏�����������������������������¡�

��� ������µ­ (2009/12/29)
������������¼��������������������� val \���\½\���\���������������½Ð�����������������������Ï��������¹����������\³\���\���\���»²¾���������¡򏪴������������ԏ��­���������·�����ď�¡�¡�

Rails������JavaScript/Ajax�����ҡ�·������

��\���\���\���\��������������������������ҡ돫������ԏ�����¹¹���·���������·������

Rails ������������ javascript ������ Ruby ������\³���¼\���������µ­½��ҏ��������­������»��������������Ώ��̏����������������¹��¡��³�����������ҏ����̏����Џ��¹��������������¡�javascript �����ҏ��������������������������������������������������������¹������ javascript�������� Ajax �����ҡ��������ޏ�����µ­½��ҏ��¹���������³����������½Ð�����������������я��������¹��¡򏪢�������������я��������¹����javascrit ������������ O/R \���\���\��Џ��¼���������������Ï���������³Ð���������¹��������¡�

������𡯏��Ð��¡񏪪��½��������� javascript ������¼���¹��ԏ��¹���������������ޏ��������������Ð link_to_function ������������������\���\½\���\������̏����̏����Џ��������­���������¹��¡�\���\���\���\��������¡돫⏢ď�ԏ����� page �����������������Ï�������\��⏢�¼\������������������\���\���\���\��\���\������������¹��¡�

# view ��������
<div id="hoge" style="display:none">aaa</div>

# ���½¼��������������������\���\���\���������\���\���\���\������¹������������ id="hoge" ��������ߏ��������̏��½¼�����µ������������
<%= link_to_function('���½¼��') {|page| page[:hoge].show} %>

Ajax ������\���\���\�����돫�������������� link_to_remote \���\½\���\������������¹��¡�

# view ��������
<div id="hoge"></div>

# ���½¼��������������������\���\���\���������\���\���\���\������¹������������ /blog/update/3 �����������я���ޡ���䏢����
# \���\���\��\¹\������̏����������������(Ajax)��¡�id="hoge" �������������������̏��½������·���²���������½��Џ��­��¹������������
<%= link_to_remote '���½¼��', 
  :url => {:controller => 'blog', :action => 'add', :id => 3},
  :update => 'hoge' %>

update \���\��\·\���\��я�����»������������·�����ď���ߏ�����������·���²������̏����������Џ��µ�����������������я��������¹���̏�¡�update \���\��\·\���\��я�����»������������·���������������³������������²������½���������¹��¡��½������¾���¹��������� controller �����Ï�����¹\���­�����������������Ï�����½����������·�����������²���������¹��¡�

# controller ��������
def update
  @data = Blog.find(params[:id]) # \������¼\��ď�����¼������������·�����ď��������������«
   
  render :update do |page|
    page.insert_html :bottom, :hoge, @data # id="hoge" ������돪������������� @data �������������������̏�����²������µ������������
    page[:hoge].replace_html @data # id="hoge" ����������������������½��Џ��­��¹��𡯏�����
  end
end

���µ��������������¡�\���\��폢�¼\������������������������� Ajax ������½����������¹���������³������������²������½���������¹��¡�submit_to_remote \���\½\���\���������»������������������¹��¡�

# view ��������
# ������¹¹������������������\���\���\��я�����\���\���\���\������¹������������ /blog/change/2 �����������я���ޡ���䏢����
# \���\���\��\¹\������̏����������������(Ajax)��¡�id="hoge" �������������������̏��½������·���²���������½��Џ��­��¹������������

<% ts = Time.now.strftime('%Y%m%d%H%M%S') %>

<% form_tag({:action => 'change', :id => 2, :anchor => ts}) do %>
  <%= text_field_tag 'text_id', '', :size => 15 %>
  <%= submit_to_remote 'submit_id', '������¹¹',
    :url => {:controller => 'blog', :action => 'change'},
    :update => 'hoge',
    :confirm => '������¹¹���·���������¹' %>
<% end %>

# controller ��������
def change
  @blog = Blog.find(params[:id])
  @blog.title = params[:text_id]

  if @blog.save
    render :text => 'success'
  else
    render :text => 'failture'
  end
end

���³������¾���¹�����������¡�update \���\��\·\���\��я�����»������������·�����������������������������������������������������»�����я�¡�

���¾����������������������䏪���쏢����½�������������¹��ԏ����� periodically_call_remote \���\½\���\�����������¡�Ajax ������\³���¼\��������ҏ�����������·������������������������ remote_function \���\½\���\������������������̏����������������¹��¡��³������������������»������������������������ޏ����� javascript ������ Ajax ���̏����̏����Џ��������­������ (�����叢���� Rails ����������·������¹������) �����������������Ï������������������²���������·���������������¹��������¡�»������������³���������·�����ď�����������������

����»²¹�������
RubyOnRails ������»��������������������Ώ����� ���⏪���� 7 ²��я��� RJS ������»��������������������Ώ�����
karaage299 at gmail.com
��돪������������µ­»���
\���\��\���\���\���\���