www.webdeveloper.com
Results 1 to 8 of 8

Thread: onclick javascript in perl not working in IE and FF but works in Chrome

  1. #1
    Join Date
    Aug 2012
    Posts
    5

    onclick javascript in perl not working in IE and FF but works in Chrome

    Hi, my programmer is ignoring me and I can't figure this out myself. It's a CGI script which displays through a separate html page, and the link:
    <a class="menu1" onclick="a.value='stap'; mnu1.submit();">
    is not working in IE and FF, but works in Chrome. At the top of the html page I have
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    Your help would be very much appreciated, thank you.

  2. #2
    Join Date
    Oct 2007
    Location
    Vienna, Austria
    Posts
    392
    Well, without more context, it's difficult. I'd need to see what's in the a and mnu1 variables. I'd suggest avoiding the use of global variables and if your project is not tiny and you need not save every bit of bandwidth, I'd consider using jQuery for event handling.

  3. #3
    Join Date
    Aug 2012
    Posts
    5
    Hey SixTease, thanks for responding. Couldn't find those variables in the .cgi script but found it in the same html render page in the form of:

    <form name="mnu1" action=$cgiurl method=POST style="margin-top: 0">
    <input type=hidden name=user value="$user">
    <input type=hidden name=pass value="$pass">
    <input type=hidden id=a name=a value=soap>

    During my research while trying to solve this I came across jQuery a few times and its structure looked quite different, so it seemed a lot of work to change. The site is an application form for my agency, so there are a lot of links on many of the pages, linking to the Payment form, where they put in how they want to be paid, different application forms, then to submit translation samples and so on, so I'd like to spare myself a lot of work. But I have noticed its all a bit slow in general, and was told this is because Perl hooked up to the .dbf dbase is a lot slower than php and mysql (which I know a lot more). Been getting about 30 applicants a day, so not a great load, and seems to work well enough when I occasionally get big projects and need hundreds of people to submit their translation samples.

    Submit buttons in forms work in all the browsers, so it's just this link thing.

    Seemed to work before on my previous server, but then I ran into problems and the programmer said he had to change something at the top of the cgi file, I believe:

    $|=1;
    print "Content-type: text/html\n";
    print "Pragma: no-cache\n\n\n";

    BEGIN {
    $ENV{DBI_PUREPERL} = 2; # or =1
    unshift @INC, "$ENV{'DOCUMENT_ROOT'}/cgi-bin";
    }

    # use strict;

    use CGI qw(:standard);
    use DBI;

    Somewhere in there. Could it be because of the new server? Switched to that because they can support sqlite, and generally a better service in many ways. Thanks for all your help. Karel

  4. #4
    Join Date
    Oct 2007
    Location
    Vienna, Austria
    Posts
    392
    Forget about Perl, this is purely a JavaScript/HTML problem.

    I suggest this: Link jQuery (add to your HTML head:
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> )
    then change this line:
    <a class="menu1" onclick="a.value='stap'; mnu1.submit();">
    to this:
    <a class="menu1" onclick="$('#a').val('stap'); $('[name=mnu1]').submit();">

    It is still extremely dirty, but it could fix your problem.

  5. #5
    Join Date
    Aug 2012
    Posts
    5
    absolutely brilliant my friend, and thanks a lot. I really don't mind wallowing in the mud to cut some corners. I think converting to mysql would be cool but a major amount of work, including the conversion from the dbf dbase.

  6. #6
    Join Date
    Aug 2012
    Posts
    5
    oops, these changes worked, but when I came across

    <!-- <a class="menu1" onclick="mnu1.action='bt.cgi'; a.value=''; mnu1.submit();"> !!!-->
    <a class="menu1" onclick="$('[name=mnu1]').action('bt.cgi'); $('#a').val(''); $('[name=mnu1]').submit();">

    and changed it according to your format it doesn't seem to work (it's supposed to transfer to a new script bt.cgi from the present b.cgi).

    Any suggestions?

  7. #7
    Join Date
    Oct 2007
    Location
    Vienna, Austria
    Posts
    392
    Yes, it's because to change the action property, you have to say: $('[name=mnu1]').prop('action', 'bt.cgi');

  8. #8
    Join Date
    Aug 2012
    Posts
    5
    ok, works great and thanks a lot!

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles