0

I have a page featuring 2 forms, both containing name and email address required fields. Both forms have unique ID and names, and the required fields are also uniquely named. I have 2 sets of ValidateRequiredFields scripts in the document head, and the form that the second script applies to is flagging that the required fields of the form that the first script applies too need completion. Here is the script:

    <script type="text/javascript" language="JavaScript">
<!-- Copyright 2005 Bontrager Connection, LLC
//
// Two places need to be customized.
//
//
// Place 1:
// Between the quotation marks, specify the name of 
//    your form.

var FormName = "theForm2";


// Place 2:
// Between the quotation marks, specify the field names 
//    that are required. List the field name separated 
//    with a comma.

var RequiredFields = "FullName,EmailAddress";


//
// No other customization of this JavaScript is required.
//
/////////////////////////////////////////////////////////

function ValidateRequiredFields()
{
var FieldList = RequiredFields.split(",")
var BadList = new Array();
for(var i = 0; i < FieldList.length; i++) {
    var s = eval('document.' + FormName + '.' + FieldList[i] + '.value');
    s = StripSpacesFromEnds(s);
    if(s.length < 1) { BadList.push(FieldList[i]); }
    }
if(BadList.length < 1) { return true; }
var ess = new String();
if(BadList.length > 1) { ess = 's'; }
var message = new String('\n\nThe following field' + ess + ' are required:\n');
for(var i = 0; i < BadList.length; i++) { message += '\n' + BadList[i]; }
alert(message);
return false;
}

function StripSpacesFromEnds(s)
{
while((s.indexOf(' ',0) == 0) && (s.length> 1)) {
    s = s.substring(1,s.length);
    }
while((s.lastIndexOf(' ') == (s.length - 1)) && (s.length> 1)) {
    s = s.substring(0,(s.length - 1));
    }
if((s.indexOf(' ',0) == 0) && (s.length == 1)) { s = ''; }
return s;
}
// -->


</script>




<script type="text/javascript" language="JavaScript">
<!-- Copyright 2005 Bontrager Connection, LLC
//
// Two places need to be customized.
//
//
// Place 1:
// Between the quotation marks, specify the name of 
//    your form.

var FormName = "theForm";


// Place 2:
// Between the quotation marks, specify the field names 
//    that are required. List the field name separated 
//    with a comma.

var RequiredFields = "Name,Email";


//
// No other customization of this JavaScript is required.
//
/////////////////////////////////////////////////////////

function ValidateRequiredFields()
{
var FieldList = RequiredFields.split(",")
var BadList = new Array();
for(var i = 0; i < FieldList.length; i++) {
    var s = eval('document.' + FormName + '.' + FieldList[i] + '.value');
    s = StripSpacesFromEnds(s);
    if(s.length < 1) { BadList.push(FieldList[i]); }
    }
if(BadList.length < 1) { return true; }
var ess = new String();
if(BadList.length > 1) { ess = 's'; }
var message = new String('\n\nThe following field' + ess + ' are required:\n');
for(var i = 0; i < BadList.length; i++) { message += '\n' + BadList[i]; }
alert(message);
return false;
}

function StripSpacesFromEnds(s)
{
while((s.indexOf(' ',0) == 0) && (s.length> 1)) {
    s = s.substring(1,s.length);
    }
while((s.lastIndexOf(' ') == (s.length - 1)) && (s.length> 1)) {
    s = s.substring(0,(s.length - 1));
    }
if((s.indexOf(' ',0) == 0) && (s.length == 1)) { s = ''; }
return s;
}
// -->


</script>

and here are the first couple of lines of code for each form:

FORM 1

     <form action="contactengine_required.php" method="post" name="theForm2" id="theForm2" onsubmit="return ValidateRequiredFields();" >
 <input class="span7" type="text" name="FullName" id="FullName" placeholder="Full Name (required)" />
  <input class="span7" type="text" name="EmailAddress" id="EmailAddress" placeholder="Email (required)" />

FORM 2

         <form action="contactengine_required_footer.php" method="post" name="theForm" id="theForm" onsubmit="return ValidateRequiredFields();" >
                                    <div class="clearfix">
                                        <label for="Name"><span style="color: #FFF; font-size: 12px">*Name:</span></label>
      <input class="span4" type="text" name="Name" id="Name"/>



                                    </div>

                                    <div class="clearfix">
                                        <label for="Email"><span style="color: #FFF; font-size: 12px">*Email:</span></label>

The development page is here. Any help with sorting this out would be so appreciated!

4

1 回答 1

0

当您在文件中放置代码块的第二个副本时,它会覆盖第一个。如果您想使用该代码块两次,则必须稍微修改它,以便两个版本不会尝试使用相同的全局变量和相同的函数名。( ValidateRequiredFields,在你FormNameRequiredFields情况下)

将复制代码的第二个实例替换为

var FormName2 = "theForm";
var RequiredFields2 = "Name,Email";

function ValidateRequiredFields2()
{
var FieldList = RequiredFields2.split(",")
var BadList = new Array();
for(var i = 0; i < FieldList.length; i++) {
    var s = eval('document.' + FormName2 + '.' + FieldList[i] + '.value');
    s = StripSpacesFromEnds(s);
    if(s.length < 1) { BadList.push(FieldList[i]); }
    }
if(BadList.length < 1) { return true; }
var ess = new String();
if(BadList.length > 1) { ess = 's'; }
var message = new String('\n\nThe following field' + ess + ' are required:\n');
for(var i = 0; i < BadList.length; i++) { message += '\n' + BadList[i]; }
alert(message);
return false;
}

并将您的第二种形式更改ONSUBMITonsubmit="return ValidateRequiredFields2();"

于 2013-05-18T00:07:32.343 回答