[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 184
  • Last Modified:

empty check javascript

do you know why it doesn't work?
i want to give error message if user didn't select size.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
function selectProduct()
{
var val1 = document.getElementById('mylist1').options[document.getElementById('mylist1').selectedIndex].value;
var val2 = document.getElementById('mylist2').options[document.getElementById('mylist2').selectedIndex].value;
var form1 = document.getElementById('form1');
 
if (val1 == "XS/S/M")
{
if(val2 == "NATURAL/BLUSH")
{
document.getElementById('add').value = 987654321;
 
}
}
else if(val1 == "M/L/XL/XXL")
{
if(val2 == "NATURAL/BLUSH")
{
document.getElementById('add').value = 987654322;
}
}
function isValidForm(theForm) {
  if(theForm.mylist1.selectedIndex<1) {
    alert('Please select size');
    theForm.mylist1.focus();
    return false;
  }
  return true; // allow submit
}
}
</script>
</head>
<body onload="javascript:selectProduct();isValidForm();">
 
<form id="form1" method="POST" onsubmit="return isValidForm(this);" action="http://secure.ultracart.com/cgi-bin/UCEditor">
 
<input type="hidden" name="merchantId" value="SWISH" />
<input type="hidden" name="add" id="add" value="" />
<br />
<SELECT id="mylist1" NAME="mylist1" onchange="javascript:selectProduct();">
<OPTION VALUE="" >Select size:</OPTION>
<OPTION VALUE="XS/S/M" >XS/S/M</OPTION>
<OPTION VALUE="M/L/XL/XXL">M/L/XL/XXL</OPTION>
</SELECT>
<br />
<SELECT id="mylist2" NAME="mylist2" onchange="javascript:selectProduct();">
<OPTION VALUE="NATURAL/BLUSH" >NATURAL/BLUSH</OPTION>
</SELECT>
<br />
<input type="text" name="quantity" value="1" />
<br />
<input type="submit" name="submit" value="add to cart" />
</form>
</body>
</html>

Open in new window

0
Hiroyuki Tamura
Asked:
Hiroyuki Tamura
  • 9
  • 7
1 Solution
 
abelCommented:
Your function isValidForm is placed inside the function selectProduct. Remove it there and place it on its own.

As a friendly hint: it is good practice to indent your code, which would immediately show such errors. While indenting your code something else became apparent: the last "else" in your code is coded as a one-liner. It is better to put brackets around its body (matter of taste, but still).


function selectProduct(){
    var val1 = document.getElementById('mylist1').options[document.getElementById('mylist1').selectedIndex].value;
    var val2 = document.getElementById('mylist2').options[document.getElementById('mylist2').selectedIndex].value;
    var form1 = document.getElementById('form1');
    
    if (val1 == "XS/S/M") {
        if (val2 == "NATURAL/BLUSH") {
            document.getElementById('add').value = 987654321;
            
        }
    }
    else
        if (val1 == "M/L/XL/XXL") {
            if (val2 == "NATURAL/BLUSH") {
                document.getElementById('add').value = 987654322;
            }
        }
    
}
 
function isValidForm(theForm){
    alert('Please select size');
    if (theForm.mylist1.selectedIndex < 1) {
        alert('Please select size');
        theForm.mylist1.focus();
        return false;
    }
    return true; // allow submit
}

Open in new window

0
 
abelCommented:
that was to show how the function should be put. Here's a fix of the function itself, because the way you called it, it caused an error (you'll find the error reporting of Firefox quite instructive, it said "theForm has no properties", which says it all...)

function isValidForm(theForm){
    mylist = document.getElementById("mylist1");
    if (mylist.selectedIndex < 1) {
        alert('Please select size');
        mylist.focus();
        return false;
    }
    return true; // allow submit
}

Open in new window

0
 
Hiroyuki TamuraAuthor Commented:
now that it says "please select size:"
but it says all the time even after the page loaded.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
function selectProduct(){
    var val1 = document.getElementById('mylist1').options[document.getElementById('mylist1').selectedIndex].value;
    var val2 = document.getElementById('mylist2').options[document.getElementById('mylist2').selectedIndex].value;
    var form1 = document.getElementById('form1');
    
    if (val1 == "XS/S/M") {
        if (val2 == "NATURAL/BLUSH") {
            document.getElementById('add').value = 987654321;
            
        }
    }
    else
        if (val1 == "M/L/XL/XXL") {
            if (val2 == "NATURAL/BLUSH") {
                document.getElementById('add').value = 987654322;
            }
        }
    
}
 
function isValidForm(theForm){
    alert('Please select size');
    if (theForm.mylist1.selectedIndex < 1) {
        alert('Please select size');
        theForm.mylist1.focus();
        return false;
    }
    return true; // allow submit
}
</script>
</head>
<body onload="javascript:selectProduct();javascript:isValidForm();">
 
<form id="form1" method="POST" onsubmit="return isValidForm(this);" action="http://secure.ultracart.com/cgi-bin/UCEditor">
 
<input type="hidden" name="merchantId" value="SWISH" />
<input type="hidden" name="add" id="add" value="" />
<br />
<SELECT id="mylist1" NAME="mylist1" onchange="javascript:selectProduct();" >
<OPTION VALUE="" >Select size:</OPTION>
<OPTION VALUE="XS/S/M" >XS/S/M</OPTION>
<OPTION VALUE="M/L/XL/XXL">M/L/XL/XXL</OPTION>
</SELECT>
<br />
<SELECT id="mylist2" NAME="mylist2" onchange="javascript:selectProduct();">
<OPTION VALUE="NATURAL/BLUSH" >NATURAL/BLUSH</OPTION>
</SELECT>
<br />
<input type="text" name="quantity" value="1" />
<br />
<input type="submit" name="submit" value="add to cart" />
</form>
</body>
</html>

Open in new window

0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
abelCommented:
> but it says all the time even after the page loaded.

I don't know why, and I didn't ask, but you have put the method in the page load event. Remove it and it will only say it when you try to submit it. Change this

<body onload="javascript:selectProduct();javascript:isValidForm();">
into this:

<body onload="javascript:selectProduct();">
and btw: you can remove the javascript: prefix. It is not a link.


0
 
Hiroyuki TamuraAuthor Commented:
thank you.
now that even i select size, still getting error message.
0
 
Hiroyuki TamuraAuthor Commented:
even i can jump to shopping website.
0
 
Hiroyuki TamuraAuthor Commented:
> and btw: you can remove the javascript: prefix. It is not a link.
where can i remove?
0
 
Hiroyuki TamuraAuthor Commented:
javascript:selectProduct();" to selectProduct();" ?
0
 
Hiroyuki TamuraAuthor Commented:
and i need to click twice to close the window
0
 
abelCommented:
I'm sorry, I don't follow. You had a question, and I'd love to help you, but considering all your new questions, it seems that you actually want me to implement it for you. I love to explain you how something works, but I do not like to do the job for you.

You came up with a piece of code. I assume you wrote it. If you have problems with a specific line, I can help you. If you have questions on how something works, I can help you. So, please rephrase: what is your question really (you said "I want to give error message if empty", that is what the code does, after my changes)?
0
 
abelCommented:
If you have questions about my last comment, I understand. You can read the FAQ about this subject here: http://www.experts-exchange.com/help.jsp?hi=23
0
 
Hiroyuki TamuraAuthor Commented:
sorry, i'm trying to learn how that works.
i'm focusing to solve why i need to click twice to close the window.
0
 
abelCommented:
> sorry, i'm trying to learn how that works.
that's good :)

> i'm focusing to solve why i need to click twice to close the window.

can you explain me that? I don't need to click twice, I can just close the window by clicking the X button in the tab of my firefox / ie / opera.
0
 
Hiroyuki TamuraAuthor Commented:
thank you.
i figured out.
function isValidForm(theForm){
    alert('Please select size');
    if (theForm.mylist1.selectedIndex < 1) {
        alert('Please select size');
        theForm.mylist1.focus();
        return false;
}
 
function isValidForm(theForm){
//delete here
    if (theForm.mylist1.selectedIndex < 1) {
        alert('Please select size');
        theForm.mylist1.focus();
        return false;
}

Open in new window

0
 
Hiroyuki TamuraAuthor Commented:
thank you.
0
 
abelCommented:
Strange you missed that, that was actually in my first followup to the solution I gave, because I saw that double line there http:#24348557

glad you found it too now.
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

  • 9
  • 7
Tackle projects and never again get stuck behind a technical roadblock.
Join Now