javascript表示敬意

时间:2017-10-06 15:01:18

标签: javascript jquery html forms

我正在建立一个jquery移动网站,并在这里发现了一个精彩的javascript片段来发布表单并将网站重定向回主页。我遇到的问题是它没有显示已发送电子邮件中的称呼,即使它在表单中显示并在网站上显示为下拉列表,以及显示“MR' MR'当向下箭头点击“先生”时。按钮。以下是javascript和表单。我们将非常感激地提供任何帮助。

JAVASCRIPT

<script type="text/javascript">
    function setReqObj() {
    var nAjax;
    if(window.XMLHttpRequest) {
    nAjax = new XMLHttpRequest();
    } else {
    nAjax = new ActiveXObject("Microsoft.XMLHTTP");
   }
   return nAjax;
}

function _SubmitForm() {
  var xmlhttp = setReqObj();

  if(xmlhttp) {
    xmlhttp.onreadystatechange=function() {
      if(xmlhttp.readyState == 4) {
        document.forms["contact-form"].reset();

        $responseText = xmlhttp.responseText;
        alert("Your query has been successfully submitted!");
        document.location.href = "#home";
  }
  }



    var $validEmail = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;  
    var $name = document.forms["contact-form"]["Full_Name"].value;
    var $comments = encodeURIComponent(document.forms["contact-form"]["Query"].value);
    var $name2 = document.forms["contact-form"]["Phone"].value;
    var $email = document.forms["contact-form"]["Email"].value;


 if($name == "") {
      alert("Please enter a valid name!");
      return false;
    }

    if($comments.length <= 4) {
      alert("Please enter a valid comment!");
      return false;
    }
    if($name2 == "") {
      alert("Please enter a valid phone number!");
      return false;
    }
    if(!$email.match($validEmail)) {
      alert("Please enter a valid email address!");
      return false;
   }

    var $ajData = "Full_Name=" + $name + "&Query=" + $comments + "&Phone=" + $name2 + "&Email=" + $email;

    xmlhttp.open("POST", "http://www.test.uk.com/cgi-bin/cgiemail/emailform2.txt", true);
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xmlhttp.send($ajData);
  } else {
    document.forms["contact-form"].submit();
  }
}
</script>

FORM

     

<fieldset data-role="ui-field-contain">  
  <div class="controlgroup">
  <legend>Enquiry Form</legend><br>
    <select name="salutation" id="salutation" >
      <option value="Mr">Mr</option> 
      <option value="Mrs">Mrs</option>
      <option value="Ms">Ms</option>
      <option  value="Miss">Miss</option>
    </select> 



    <br>
    <label for="fullname">Full name:</label>
    <input type="text" name="Full_Name" id="fullname" />  

    <label for="query">Query:</label>
    <textarea name="Query" id="query"></textarea>

    <label for="phone">Phone Numbers:</label>
    <textarea name="Phone" id="phone" ></textarea>

    <label for="email">Email:</label>
    <input type="text" name="Email" id="email" />  
    </div>
  </fieldset>

- &GT;       

  </form>

非常感谢, Ruwak

2 个答案:

答案 0 :(得分:1)

您没有随请求发送所选的称呼值。您需要捕获该值,然后将其附加到请求的其余部分:

var $salutation = document.forms["contact-form"]["salutation"].value;

然后根据服务器端代码,将其包含在名称中:

var $ajData = "Full_Name=" + $salutation + " " + $name + "&Query=" + $comments + "&Phone=" + $name2 + "&Email=" + $email;

或将其包含为单独的查询字符串参数:

var $ajData = "Full_Name=" + $name + "&Query=" + $comments + "&Phone=" + $name2 + "&Email=" + $email + "&Salutation=" + $salutation;

答案 1 :(得分:1)

您没有从表单中选择称呼的价值,我认为这就是您没有在电子邮件中收到它的原因。首先,选择称呼的价值:

var $salutation = document.forms["contact-form"]["salutation"].value;

现在,将此值添加到您通过ajax发送的数据中:

var $ajData = "Salutation=" + $salutation + "&Full_Name=" + $name + "&Query=" + $comments + "&Phone=" + $name2 + "&Email=" + $email; 

现在,您应该在服务器上获得Salutation的值。您还需要确保在服务器端还将此值附加到已发送的电子邮件中。