dcsimg
www.webdeveloper.com
Results 1 to 7 of 7

Thread: TextField Width on the output???

  1. #1
    Join Date
    Apr 2003
    Posts
    12

    TextField Width on the output???

    Hello all,

    I need some help!

    I have a textfield (multiline), and everything works fine when you are using it and typing in, the lines break. But actually when you submit all the text, then the text shows up as one line, no breaks no nothing! If I specify width, it still doesn't work. I'm not a big expert on perl or cgi to know how to break the lines apart, but somebody please help!!!

    Thanks a lot!

  2. #2
    Join Date
    Apr 2003
    Location
    Houston, Texas
    Posts
    14
    replace \n, with <br>, *shrugs* I think thats what I did... Cant remember lol

  3. #3
    Join Date
    Apr 2003
    Posts
    12

    That didn't seem to work...

    I need to have the MESSAGE, which is the textinput, to brake lines whenever it reaches that width. I think this is the perl line that needs to have something changed:

    open(FILE,">$base_dir/$book_file") || &error("The directory $base_dir requires mode 777!");
    flock(FILE,2) if ($lock == 1);
    foreach $line (@booklines) {
    if ($line =~ /^.*<!--begin -->.*/) {
    ($part1, $part2) = split(/<!--begin -->\s*/,$line);
    print FILE "$part1";
    print FILE "<!--begin -->\n";
    print FILE "<!--top-ID=$entry_id -->\n";
    print FILE "<tr bgcolor=\"$entry_bg\"><td width=\"105\">\n<table border=0 cellspacing=0 cellpadding=2>\n";
    print FILE "<tr><td><font face=\"$font_face\" size=1>$entry_id)</font></td></tr>\n";
    print FILE "<tr><td><b><font face=\"$font_face\" size=1>Name:</font></b></td>\n";
    print FILE "<td><b><font face=\"$font_face\" size=1>$FORM{'username'}</font></b></td></tr>";
    if ($FORM{'country'}) {
    print FILE "<tr><td><font face=\"$font_face\" size=1>Country:</font></td>\n";
    print FILE "<td><font face=\"$font_face\" size=1>$FORM{'country'}</font></td></tr>\n";
    }
    if ($FORM{'url'}) {
    print FILE "<tr><td><img src=\"$url_img\" width=20 height=20></td>\n";
    print FILE "<td><font face=\"$font_face\" size=1><a href=\"$FORM{'url'}\" target=\"_blank\">$FORM{'url'}</a></font></td></tr>\n";
    }
    print FILE "</table>\n</td><td width=\"250\"><font face=\"$font_face\" size=2>\n";
    print FILE "$FORM{'message'}</font><hr size=1>\n";
    print FILE "<font face=\"Arial\" size=\"1\"><img src=\"$arrow_img\" width=9 height=9><b>$this_day $host</b></font></td></tr>\n";
    print FILE "<!--end-ID=$entry_id -->\n";
    print FILE "$part2";
    $succes = 1;
    }
    else {
    print FILE "$line";
    }

  4. #4
    Join Date
    Apr 2003
    Posts
    12

    Maybe this can help as well...

    This piece comes before the other one I posted, maybe this one can help better:

    sub check_input {

    my($username,$usermail,$userurl,$usermessage);
    $username = $FORM{'username'};
    $usermail = $FORM{'country'};
    $userurl = $FORM{'url'};
    $FORM{'message'} =~ s/\cM\n/<br>\n/g;
    $usermessage = $FORM{'message'};
    if ($username !~ /\S/) {
    if ($required{'username'} eq "yes") {
    &error('You forgot to fill in the <u>Name</u> field. Please correct it and re-submit!');
    }
    $FORM{'username'} = "anonymous";
    }
    if ($usermail !~ /\S/) {
    if ($required{'country'} eq "yes") {
    &error('You forgot to fill in the <u>country</u> field. Please correct it and re-submit!');
    }
    $FORM{'country'} = "";
    }
    if ($userurl !~ /^http:\/\/[._a-z0-9-]+\.[._a-z0-9-]+/i) {
    if ($required{'url'} eq "yes") {
    &error('The <u>URL</u> seems not to be valid. Please correct it and re-submit!');
    }
    $FORM{'url'} = "";
    }
    if ($usermessage !~ /\S/) {
    if ($required{'message'} eq "yes") {
    &error('You forgot to fill in the <u>Message</u> field. Please correct it and re-submit!');
    }
    $FORM{'message'} = "No Comments";

  5. #5
    Join Date
    Apr 2003
    Posts
    12

    Ahhhhh...

    I've also tryed to change

    $FORM{'message'} =~ s/\cM\n/<br>\n/g;

    to

    s/\r|\n/<br>/g;

    but that didn't work eighter...

    I'll just sit on tight here, relax, smoke a couple of cigs, and keep checking to see if anybody replyed.
    All help appreciated!

  6. #6
    Join Date
    Dec 2002
    Location
    Pleasanton, CA
    Posts
    2,132
    Let me first try to understand/restate the problem.
    You are submitting a textfield to a script and you want to somehow insert line breaks.

    You probably already understand that, when typing into a textfield, it will automatically line wrap, so there are no returns. So what you see in CGI is what was entered.

    My problem is understanding why you want to enter the line breaks in the CGI script. Maybe the reason will point to a solution.

  7. #7
    Join Date
    Feb 2003
    Location
    Derby, UK
    Posts
    456
    I think nedals has asked the key questions, but just to try to anticipate - if you want the block of text divided into a fixed number of characters per line, that is easy, just looop through taking x characters from the beginning of the field until you have no more. More likely you want to break between words in which case the logic is something like

    (to break into lines no more than x chars long)

    while text left
    start at character x
    work backwards until you get to the beginning orfind the first space
    if you are back at the beginning just take the first x chars (you will have to break it as they have entered a long string of text that wont fit)
    if you are not at the beginning take off the characters up to the space you found
    add a newline (\n)
    repeat

    Like nedals said though, this may or may not correspond to where the lines were automatically wrapped by the textarea control, this is purely a user interface thing and the position of the breaks is not passed to the server when the form is submitted.

    Incidentally, again as nedals said, what you are going to use the wrapped text for is critical, if you are going to put it in an email for example then the above method of chopping it into lines makes sense, but if you are going to show the message in a browser, you would probably be better letting the browser do the wrapping itself...

    HTH,

    Dai

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