#1
  1. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Mar 2003
    Posts
    174
    Rep Power
    12

    Javascript_tag replacing whitespaces w/ '%20'


    Hello,

    I have a form that tests if a title has been changed since the page was loaded and the page has been submitted. If the page title has been changed then a confirm box will ask if the user wants to have the title changed. The problem is if the person hits cancel, all white spaces in the title get replaced w/ '%20'.

    Here's the code I was using:

    Code:
    <%=javascript_tag( "function confirmSubmit(){ var page_title_before= '#{u @page.title}';
                                                  var page_title_on_submit = escape($('page_title').value);
                                                      if( page_title_before != page_title_on_submit ){
                                                          var agree=confirm('Changing the title of this page will break any links or bookmarks that refer to it.\\nPress \"OK\" to save with the new title, or \"Cancel\" to revert to the original title.');  
                                                     if(agree){ return true; }
                                                                                                     else{  alert( 'page_title_before-->>' + escape(page_title_before) ); $('page_title').value = page_title_before; return false; }
                                                      }
                                                  else{ return true; }}") %>
  2. #2
  3. No Profile Picture
    Contributing User
    Devshed Novice (500 - 999 posts)

    Join Date
    Jan 2004
    Location
    Constant Limbo
    Posts
    989
    Rep Power
    363
    It is hard to say without knowing what u does in the following section of code:
    Code:
    var page_title_before= '#{u @page.title}';
    I asume that it escapes the string to match the next line
    Code:
    var page_title_on_submit = escape($('page_title').value);
    Since (again, assuming URI) escape will do:
    Code:
    irb(main):011:0> s = 'This is a title'
    => "This is a title"
    irb(main):012:0> URI.escape s
    => "This%20is%20a%20title"
    irb(main):013:0>
    If both of those assumptions hold, then when you do:
    Code:
    $('page_title').value = page_title_before;
    in the cancel case, you assign page_title the escaped version of @page.title
    True happiness is not getting what you want, it's wanting what you've already got.

    My Blog

IMN logo majestic logo threadwatch logo seochat tools logo