Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Changeset 6526

Show
Ignore:
Timestamp:
04/15/07 23:08:02 (1 year ago)
Author:
mislav
Message:

sync form.js and its tests with prototype trunk:6504

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • spinoffs/prototype/branches/form/src/form.js

    r6309 r6526  
    99      if (!element.disabled && element.name) { 
    1010        var key = element.name, value = $(element).getValue(); 
    11         if (value != null) { 
    12           if (key in result) { 
     11        if (value != null) {  
     12               if (key in result) { 
    1313            if (result[key].constructor != Array) result[key] = [result[key]]; 
    1414            result[key].push(value); 
     
    5757  disable: function(form) { 
    5858    form = $(form); 
    59     form.getElements().each(function(element) { 
    60       element.blur(); 
    61       element.disabled = 'true'; 
    62     }); 
     59    Form.getElements(form).invoke('disable'); 
    6360    return form; 
    6461  }, 
     
    6663  enable: function(form) { 
    6764    form = $(form); 
    68     form.getElements().each(function(element) { 
    69       element.disabled = ''; 
    70     }); 
     65    Form.getElements(form).invoke('enable'); 
    7166    return form; 
    7267  }, 
     
    161156  disable: function(element) { 
    162157    element = $(element); 
     158    element.blur(); 
    163159    element.disabled = true; 
    164160    return element; 
     
    167163  enable: function(element) { 
    168164    element = $(element); 
    169     element.blur(); 
    170165    element.disabled = false; 
    171166    return element; 
  • spinoffs/prototype/branches/form/test/unit/form.html

    r6312 r6526  
    6767</div> 
    6868 
    69 <form id="form_array"> 
    70   <input type="text" name="twin" value="" /> 
     69<form id="form_array">  
     70  <input type="text" name="twin" value="" />  
    7171  <input type="text" name="twin" value="siamese" /> 
    7272  <!-- Rails checkbox hack with hidden input: --> 
    73   <input type="checkbox" id="checkbox_hack" name="checky" value="1" /> 
     73  <input type="checkbox" id="checkbox_hack" name="checky" value="1" />  
    7474  <input name="checky" type="hidden" value="0" /> 
    7575</form> 
     
    185185    }}, 
    186186     
     187    testFormEnabling: function(){ with(this) { 
     188      var form = $('form_focus') 
     189      var input1 = form.focus_disabled 
     190      var input2 = form.focus_text 
     191       
     192      assert(input1.disabled) 
     193      assert(!input2.disabled) 
     194       
     195      form.disable() 
     196      assert(input1.disabled) 
     197      assert(input2.disabled) 
     198       
     199      form.enable() 
     200      assert(!input1.disabled) 
     201      assert(!input2.disabled) 
     202       
     203      input1.disable() 
     204      assert(input1.disabled) 
     205       
     206      // non-form elements: 
     207      var fieldset = $('form_fieldset') 
     208      var fields = fieldset.immediateDescendants() 
     209      assert(fields.all(function(select){ return !select.disabled })) 
     210       
     211      Form.disable(fieldset) 
     212      assert(fields.all(function(select){ return select.disabled })) 
     213       
     214      Form.enable(fieldset) 
     215      assert(fields.all(function(select){ return !select.disabled })) 
     216    }}, 
     217     
    187218    testFormElementEnabling: function(){ with(this) { 
    188219      assert($('input_disabled').disabled); 
     
    283314 
    284315      // Checks that select-related serializations work just fine 
    285       assertEqual('vu=1&vm%5B%5D=1&vm%5B%5D=3&nvu=One&nvm%5B%5D=One&nvm%5B%5D=Three&evu=&evm%5B%5D=&evm%5B%5D=Three', Form.serialize('form_selects')); 
    286        
    287       // should not eat empty values for duplicate names 
    288       $('checkbox_hack').checked = false 
    289       var data = Form.serialize('form_array', true) 
    290       assertEnumEqual(['', 'siamese'], data['twin']) 
    291       assertEqual('0', data['checky']) 
    292       $('checkbox_hack').checked = true 
    293       assertEnumEqual($w('1 0'), Form.serialize('form_array', true)['checky']) 
     316      assertEqual('vu=1&vm%5B%5D=1&vm%5B%5D=3&nvu=One&nvm%5B%5D=One'+ 
     317        '&nvm%5B%5D=Three&evu=&evm%5B%5D=&evm%5B%5D=Three',  
     318        Form.serialize('form_selects')); 
     319       
     320      // should not eat empty values for duplicate names  
     321      $('checkbox_hack').checked = false; 
     322      var data = Form.serialize('form_array', true);  
     323      assertEnumEqual(['', 'siamese'], data['twin']);  
     324      assertEqual('0', data['checky']); 
     325       
     326      $('checkbox_hack').checked = true;  
     327      assertEnumEqual($w('1 0'), Form.serialize('form_array', true)['checky']); 
    294328    }}, 
    295329