in reply to Re^7: Onkeyup not working
in thread Onkeyup not working

still its not workin out. this is the script

it only prints $name not jone

#!/usr/bin/perl -wT use strict; use CGI::Carp qw(fatalsToBrowser warningsToBrowser); my $name = "jone"; print "Content-type: text/html\n\n"; print <<'HTML'; <!DOCTYPE html> <html> <head> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquer +y.min.js"></script> </head> <body> <input type="text" class="keyup-email text-input" name="7" value=""> <button type="butt +on" id="m1p" class="edBtn"> submit </b> </button> $name <script> $('.keyup-email').keyup(function() { var inputVal = $(this).val(); var emailReg = /^(?!.*_)\w+([\.-]?\w+)*@\w+([\.-]? +\w+)*(\.\w{2,3})/; if(!emailReg.test(inputVal)) { $(".edBtn").prop("disabled", true); } else if(inputVal == 'test@test.com') { $(".edBtn").prop("disabled", true); }else{ $(".edBtn").prop("disabled", false); } }); </script> </body> </html> HTML

Replies are listed 'Best First'.
Re^9: Onkeyup not working
by marto (Cardinal) on Oct 08, 2023 at 14:34 UTC

    (Re?)read the documentation liked by hippo above:

    print <<'HTML';

    should be:

    print <<"HTML";

    for example:

    my $derp = "jone"; print <<'HTML'; <h3>$derp</h3> HTML

    Returns:

    <h3>jone</h3>

    Thought it'll probably throw errors due to jQuery's use of $ in the JavaScript. To make life easier on yourself, take the advice from elsewhere in the thread, use a templating system to separate your perl code from everything else. Tutorials -> Framework, Templating, and Content Management Systems. If you're not exiting some existing code (or even if you are and it's going to grow significantly) consider making life easier (and fun) using Mojolicious::Lite.

      tho i dont have script problem. the only problem is this regex var emailReg = /^(?!.*_)\w+(\.-?\w+)*@\w+(\.-?\w+)*(\.\w{2,3})/; since it includes things like @ thats why problem comes.

      but when i try to remove regex . the script work well with other JavaScript codes

        i have been able to fix the problem by doing, wat i always do most of the times if anything goes head paining

        i have removed regex from html and put it in perl script

        my $reg = 'var emailReg = /^(?!.*_)\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})/;';

        and then i just call it in javascript like this

        <script> \$('.keyup-email').keyup(function() { var inputVal = \$(this).val(); $reg if(!emailReg.test(inputVal)) { \$(".edBtn").prop("disabled", true); } else if(inputVal == 'test\@test.com') { \$(".edBtn").prop("disabled", true); }else{ \$(".edBtn").prop("disabled", false); } }); </script>

        And worked, so full script is this

        #!/usr/bin/perl -wT use strict; use CGI::Carp qw(fatalsToBrowser warningsToBrowser); my $derp = "jone"; my $reg = 'var emailReg = /^(?!.*_)\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\ +w{2,3})/;'; print "Content-type: text/html\n\n"; print <<"HTML"; <!DOCTYPE html> <html> <head> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquer +y.min.js"></script> </head> <body> <input type="text" class="keyup-email text-input" name="7" value=""> <button type="butt +on" id="m1p" class="edBtn"> submit </b> </button> <h3>$derp</h3> <script> \$('.keyup-email').keyup(function() { var inputVal = \$(this).val(); $reg if(!emailReg.test(inputVal)) { \$(".edBtn").prop("disabled", true); } else if(inputVal == 'test\@test.com') { \$(".edBtn").prop("disabled", true); }else{ \$(".edBtn").prop("disabled", false); } }); </script> </body> </html> HTML

        most of the times if javascript gives me hard time i just declare it in perl script then i just call it in html as string. and works

        something which is very simple, and most dont think about it that can fix problem