onChange + javascript in perl CGI - question


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers onChange + javascript in perl CGI - question
# 1  
Old 07-27-2008
onChange + javascript in perl CGI - question

Hello all,

Am trying to include a onChange java script to my perl CGI application which uses POST method to upload files to file_server

This is how I embedded javascript in the perl code that renders CGI application

Code:
print qq|
  <script type="text/javascript" src="display.js">
  </script>
  |;

Contents of display javascript are :

Code:
function changeDispatch(newLink) {
  if ( newLink != null ) {
    document.location.href = newLink;
  }
}

This is the popup menu, when an item is selected from the list it should automatically trigger the action designation instead of a separate "GO" ( submit ) button for each of the popup menu that I have got.

Code:
print $cgi->popup_menu(-name=>'fruits',
                         -values=>$fruits_arr,
                         -onChange=>"changeDispatch('$arg')");

Here in '$arg' if am able to store the selected value from the popup_menu, then its quite easy to formulate a string and pass it to changedDispatch in javascript.
But am not able to retrieve any such data

Whats happening :
If I click on any of the fruits say, "apple" the onClick effect is happening and it comes to the same initial page. If that is, fruits.cgi once I click that - it again comes to fruits.cgi as though it has been loaded for the first time

What I want to happen :
Based on the onClick event, I have other functions to be dispatched via GUI. That would seem to happen only when I know what option is clicked.

I accept that am not that good when it comes to GUI design or adding effects to that.

I have seen several website doing this, it should be something very easy for those who had already worked on this.
Could you please provide some pointers ?

thanks Smilie

Last edited by matrixmadhan; 07-27-2008 at 09:09 AM.. Reason: added more relevant information
# 2  
Old 07-27-2008
You did not show anything about the onClick, but I assume if you want to capture onChange you ought not be implementing onClick? Even though theoretically they do not interfere if you do them properly, it may be a source of confusion unless you know you are doing it the right way.

Do you get any expected values for $arg? Seems like from your post you don't but I am not totally clear about that. If so, you should first concentrate on getting $arg to carry the value you expect first.

How do you get the value of $arg? I assume you used CGI->param()?

By the way, have you tested the changeDispatch() Javascript function separately using a static HTML test page before? If you look at DOM:document.location - MDC there is a note saying the use of document.location.href as a write property is not portable. In fact I have only used

window.location = url;

in the past. I have not seen anyone making a redirect like you did (using document.location.href) before. Are you sure that function is working properly?

If everything fails, I suggest you to:

(1) Check the Javascript debugger for any relevant error messages
(2) Re-post with the HTML generated by Perl. Because your issue is not related to Perl but HTML and Javascript, the abstraction by Perl CGI may mask investigation.
# 3  
Old 09-26-2008
Thanks for the reply. ( Am replying back after a long time, sorry about that )

Here is what am trying to achieve.

Using a "submit" button, everything works correctly. But I would like to achieve the same just by clicking any of the options in "pop_up" menu using a java script.

I tried several other forms as posted above but I could not get none of them to work for my case ( I know I missed something very badly )

Could you please help me with that ?

This is just a quick code that I wrote to demonstrate what am trying to do and what is the problem in doing so. There are so many mistakes that are unrelated to the post, please ignore them.

Thanks for the reply again in advance Smilie

Code:
#! /opt/third-party/bin/perl

use strict;
use warnings;

use CGI qw/:standard *table/;

my $cgi = CGI->new();

print $cgi->header('text/html');

sub generateHeader {
  print $cgi->start_html(-title=>'Sample Test');
  print $cgi->h3({-align=>'center'}, 'Sample Test Display');
  print $cgi->start_form(-method => 'GET',
                         -name => 'main_form',
                         -action => 'test.cgi',
                         -enctype => 'multipart/form-data');
}

sub submitButtonGenerator {
  my $button_name = shift;
  print $cgi->submit(-value=>$button_name);
}

sub generateFooter {
  my ($i, $tmp);

  print $cgi->end_form();
  print $cgi->hr();

  print $cgi->end_html();
}

sub display {
 my @arr = ('IceCream', 'Choco', 'Biscuit', 'Fruits');
 my $edible_arr = \@arr;

 print $cgi->popup_menu(-name=>'edible',
                         -values=>$edible_arr);

}

sub displayResult {
  print $cgi->param("edible") . $cgi->br();
}

generateHeader;
display;
print $cgi->br();
print $cgi->br();
submitButtonGenerator("Go");
displayResult;
generateFooter;

exit(0);

# 4  
Old 09-29-2008
You meant this?

Code:
#! /opt/third-party/bin/perl

use strict;
use warnings;

use CGI qw/:standard *table/;

my $cgi = CGI->new();

print $cgi->header('text/html');

sub generateHeader {
  print $cgi->start_html(-title=>'Sample Test');
  print $cgi->h3({-align=>'center'}, 'Sample Test Display');
  print $cgi->start_form(-method => 'GET',
                         -id => 'main_form',
                         -name => 'main_form',
                         -action => 'test.cgi',
                         -enctype => 'multipart/form-data');
}

sub submitButtonGenerator {
  my $button_name = shift;
  print $cgi->submit(-value=>$button_name);
}

sub generateFooter {
  my ($i, $tmp);

  print $cgi->end_form();
  print $cgi->hr();

  print $cgi->end_html();
}

sub display {
 my @arr = ('IceCream', 'Choco', 'Biscuit', 'Fruits');
 my $edible_arr = \@arr;

 print $cgi->popup_menu(-name=>'edible',
              -onChange => q/document.getElementById('main_form').submit()/,
                         -values=>$edible_arr);

}

sub displayResult {
  print $cgi->param("edible") . $cgi->br();
}

generateHeader;
display;
print $cgi->br();
print $cgi->br();
submitButtonGenerator("Go");
displayResult;
generateFooter;

exit(0);

# 5  
Old 10-08-2008
Perfectly yes ! Smilie

This is what I have been looking for. Thank you very much for this.

I will build rest of my application using this as a starting point.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

Javascript: displaying images with onchange event

I am looking to display the pdf of one of two distributions, depending on what the user selected: <script type="text/javascript"> function distributionChange() { var img = document.createElement("img"); var link = 'http://en.wikipedia.org/wiki/xxx#mediaviewer/File:yyy'; switch... (4 Replies)
Discussion started by: figaro
4 Replies

2. OS X (Apple)

Perl CGI

I am trying to get my MacBook Pro with 10.8 Mt Lion set up to run Perl CGI scripts. Having a problem. I can start Apache Web Server with no problems. Why do I put the static and dynamic scripts? I which directory? I have looked at this article:... (3 Replies)
Discussion started by: djehresmann
3 Replies

3. Shell Programming and Scripting

CGI Perl : while loop in CGI perl

Hi Team, I am trying to connect to database(succeeded ) and print the records on the browser using while loop. But the elements of array are not displayed instead while loop is displayed directly. Instead of the below I can embed html statements in print but I am looking for the below style as I... (1 Reply)
Discussion started by: scriptscript
1 Replies

4. Shell Programming and Scripting

Perl CGI : unable to download the excel sheet from perl cgi page

Hi All, I have written an cgi perl script that displays an image(Excel image) and when clicked on that Image I need to download a excel sheet. I made sure that excel sheet exists in the folder with the given name but still I am not able to download the sheet. print "<center><table... (2 Replies)
Discussion started by: scriptscript
2 Replies

5. Shell Programming and Scripting

Perl cgi pages out of cgi-bin folder in WINDOWS

Hi team, I have a typical problem with cgi pages in apache webserver in WINDOWS I am able to execute(display) the pages that are saved in cgi-bin folder. But I am not able to execute the pages stored in htdocs or other folder other than cgi-bin folder. Could anyone please let me know how... (1 Reply)
Discussion started by: scriptscript
1 Replies

6. Programming

Javascript question: using the image button

I have javascript that I want to use to build up a dynamic array: the user clicks on one or more images and when clicking the Show button, the list of image names is displayed that the user clicked. <script type="text/javascript"> var images = ; images =... (0 Replies)
Discussion started by: figaro
0 Replies

7. Shell Programming and Scripting

How to call perl web service from javascript?

Hi, I would like to call the below perl web service from javascript .Any help would be appreciated.I am new to web services.Please do the needful. Server Program(Perl Web Service) #!/usr/bin/perl use lib '/usr/lib/perl5/5.8.8/SOAP-Lite-0.65_3/lib'; use SOAP::Transport::HTTP; use Demo;... (3 Replies)
Discussion started by: liyakathali
3 Replies

8. Shell Programming and Scripting

How to use JavaScript in Perl Object Oriented

i am new to Perl CGI Object oriented. I want to use some java script in my Perl CGI but i am not able to do that. I am using Submit button then via param() i am getting all field parameters. But i want to validate all fields first then i want to move. But Use of Java script, i don't know (1 Reply)
Discussion started by: Navrattan Bansa
1 Replies

9. Web Development

problem with exporting vairable from one perl cgi to another perl cgi script while redirecting.

Can anyone tell me how to export a variable from one perl CGI script to another perl cgi script when using a redirect. Upon running the login.pl the user is prompted to enter user name and password. Upon entering the correct credentials (admin/admin) the user is redirected to welcome page. My... (3 Replies)
Discussion started by: Arun_Linux
3 Replies

10. UNIX for Dummies Questions & Answers

transforming small javascript into perl

I need to transform this small javascript into a perl. So then when I need to use it I can call $something, instead of using this javascript. Could someone help me archive this? (9 Replies)
Discussion started by: marringi
9 Replies
Login or Register to Ask a Question