0

私はjavascriptの完全な初心者です。私のウェブサイトには、フォーム内のいくつかの div の非表示を処理する js があります。フォームの値の一部を変更したいのですが、javascript の構文の一部に混乱しています。ここに私が取り組んでいるhtmlとスクリプトがあります:

<div class="outeremailcontainer">
    <div id="emailcontainer">
        <?php include('verify.php'); ?>
        <form action="../index_success.php" method="post" id="sendEmail" class="email">
            <h3 class="register2">Newsletter Signup:</h3>
            <ul class="forms email">
                <li class="name">
                    <label for="yourName">Name: </label>
                    <input type="text" name="yourName" class="info" id="yourName" value="<?php echo $_POST['yourName']; ?>" /><br />
                </li>
                <li class="city"><label for="yourCity">City: </label>
                    <input type="text" name="yourCity" class="info" id="yourCity" value="<?php echo $_POST['yourCity']; ?>" /><br />
                </li>
                <li class="email">
                    <label for="emailFrom">Email: </label>
                    <input type="text" name="emailFrom" class="info" id="emailFrom" value="<?php echo $_POST['emailFrom']; ?>" />
                     <?php if(isset($emailFromError)) echo '<span class="error">'.$emailFromError.'</span>';
                     ?>
                </li>
                <li class="buttons email">
                     <button type="submit" id="submit">Send</button>
                     <input type="hidden" name="submitted" id="submitted" value="true" />
                </li>
            </ul>
        </form>
    <div class="clearing">
    </div>
  </div>
</div>

そしてスクリプト:

<script type="text/javascript">

$(document).ready(function(){

 $('#emailFrom')
  .focus(function(){
   if ($('#overlay').length) { return; } // don't keep adding overlays if one exists
 $('#sendEmail')

 .find('.name, .city').slideDown(300, function(){ $(this).show(); });
 $('.outeremailcontainer').css({ position: 'relative', bottom: 0, left: 0, zIndex:       1001 });
 $('<div id="overlay"></div>').appendTo('body');
 });

$('#overlay').live('click', function(){
$('#sendEmail')
 .css({ backgroundColor : 'transparent' })
 .find('.name, .city').slideUp(300);
$('.outeremailcontainer').css({ position : 'static' });
$('#overlay').remove();
 });

});

インクルード内のページの下部にもスクリプトがあります。

$(document).ready(function(){

$('#emailFrom')
.focus(function(){
 if ($('#overlay').length) { return; } // don't keep adding overlays if one exists
 $('#sendEmail')

  .find('.name, .city').slideDown(300, function(){ $(this).show(); });
 $('.outeremailcontainer').css({ position: 'relative', bottom: 0, left: 0, zIndex : 1001 });
 $('<div id="overlay"></div>').appendTo('body');
 });

  $('#overlay').live('click', function(){
 $('#sendEmail')
  .css({ backgroundColor : 'transparent' })
  .find('.name, .city').slideUp(300);
 $('.outeremailcontainer').css({ position : 'static' });
 $('#overlay').remove();
  });

});

$(document).ready(function(){
  $("#submit").click(function(){
    $(".error").hide();
    var hasError = false;
    var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;


    var emailFromVal = $("#emailFrom").val();

    if(emailFromVal == '') {
      $("#emailFrom").after('<span class="error"><br />You forgot to enter the email address to send from.</span>');
      hasError = true;

    } else if(!emailReg.test(emailFromVal)) {
      $("#emailFrom").after('<span class="error"<br />>Enter a valid email address to send from.</span>');
      hasError = true;
}

    var yourNameVal = $("#yourName").val();
    if(yourNameVal == '') {
    $("#yourName").after('<span class="error"><br />You forgot to enter your name.</span>');
    hasError = true;
}

 var yourCityVal = $("#yourCity").val();
if(yourCityVal == '') {
    $("#yourCity").after('<span class="error"><br />You forgot to enter your city.</span>');
    hasError = true;
}
if(hasError == false) {
  $(this).hide();
  $("#sendEmail li.buttons").append('<img src="/wp-content/themes/default/images/template/loading.gif" alt="Loading" id="loading" />');
  $.post("/includes/sendemail.php",
//emailTo: emailToVal, 
       { emailFrom: emailFromVal, yourName: yourNameVal, yourCity: yourCityVal  },
         function(data){
        $("#sendEmail").slideUp("normal", function() {
          $("#sendEmail").before('<h3 class="register2">Thank you!  You\'re on the email list!</h3><p class="emailbox">Click <a href="xxx">HERE</a> for your free song.</p>');
        });
         }
     );
}
return false;
 });
});

上記のコードはすべて正常に動作します。ただし、いくつかの異なる変数で別のフォーム アクションを使用したいと考えています。コードのフォーム部分は次のようにする必要があります。

    <div class="outeremailcontainer">
    <div id="emailcontainer">
        <?php include('verify.php'); ?>
        <form action="https://madmimi.com/signups/subscribe/66160" method="post" id="mad_mimi_signup_form" class="email">
            <h3 class="register2">Newsletter Signup:</h3>
            <ul class="forms email">
                <li class="name">
                    <label for="signup_name">Name: </label>
                    <input type="text" name="signup[name]" class="info" id="signup_name" value="<?php echo $_POST['signup_name']; ?>" /><br />
                </li>
                <li class="city"><label for="signup_city">City: </label>
                    <input type="text" name="signup[city]" class="info" id="signup_city" value="<?php echo $_POST['signup_city']; ?>" /><br />
                </li>
                <li class="email">
                    <label for="signup_email">Email: </label>
                    <input type="text" name="signup[email]" class="required" id="signup_email" value="<?php echo $_POST['signup_email']; ?>" />
                     <?php if(isset($emailFromError)) echo '<span class="error">'.$emailFromError.'</span>';
                     ?>
                </li>
                <li class="buttons email">
                     <button type="submit" id="webform_submit_button">Send</button>
                     <input type="hidden" name="submitted" id="submitted" value="true" />
                </li>
            </ul>
        </form>
    <div class="clearing">
    </div>
  </div>
</div>

div 非表示アクションが新しい値で引き続き機能するために、どの js コードを変更する必要があるのか​​ わかりません。誰でもこれを手伝ってもらえますか?ありがとう!

4

1 に答える 1

0

JS ファイルのフィールドの名前を変更するだけでよいようです。

<input type="text" name="yourName" class="info" id="yourName" value="<?php echo $_POST['yourName']; ?>" />

に変わりました:

<input type="text" name="signup[name]" class="info" id="signup_name" value="<?php echo $_POST['signup_name']; ?>" />

だからあなたのJSはから変更する必要があります

var yourNameVal = $("#yourName").val();

var yourNameVal = $("#signup_name").val();

同じことがすべてのフィールドに当てはまります。それを操作するには、正しい要素を選択する必要があります

ここにjqueryセレクターを説明するリンクがあります

于 2012-11-22T08:41:48.297 に答える