javascript - ajax 表单无法正常工作

标签 javascript php jquery html ajax

你好,我一直在使用 ajax 开发一个表单,但是当它归结为验证选择框时

问题 1)每次我将 job_est 值留空时,表单仍然会提交,就像已验证一样

问题2)我可以在ajax中使用异步吗 对不起我的写作能力

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function() {

//if submit button is clicked
$('#submit').click(function () {        

    //Get the data from all the fields
    var name = $('input[name=name]');
            var l_name = $('input[name=l_name]');
            var phone = $('input[name=phone]');
    var email = $('input[name=email]');
            var postcode = $('input[name=postcode]');
            var house_number = $('input[name=house_number]');
            var street = $('input[name=street]');
            var job_est = $('select[name=job_est]');
    var comment = $('textarea[name=comment]');

    //Simple validation to make sure user entered something
    //If error found, add hightlight class to the text field
    if (name.val()=='') {
        name.addClass('hightlight');
        return false;
    } else name.removeClass('hightlight');
    if (l_name.val()=='') {
        l_name.addClass('hightlight');
        return false;
    } else l_name.removeClass('hightlight');
            if (phone.val()=='') {
        phone.addClass('hightlight');
        return false;
    } else phone.removeClass('hightlight');
    if (email.val()=='') {
        email.addClass('hightlight');
        return false;
    } else email.removeClass('hightlight');
            if (postcode.val()=='') {
        postcode.addClass('hightlight');
        return false;
    } else postcode.removeClass('hightlight');
            if (house_number.val()=='') {
        house_number.addClass('hightlight');
        return false;
    } else house_number.removeClass('hightlight');
            if (street.val()=='') {
        street.addClass('hightlight');
        return false;
    } else street.removeClass('hightlight');
            if (job_est.val()=='') {
        job_est.addClass('hightlight');
        return false;
    } else job_est.removeClass('hightlight');
    if (comment.val()=='') {
        comment.addClass('hightlight');
        return false;
    } else comment.removeClass('hightlight');

    //organize the data properly
    var data = 'name=' + name.val() + '&email=' + email.val() + '&phone=' + 
    phone.val() + '&comment='  + encodeURIComponent(comment.val());

    //disabled all the text fields
    $('.text').attr('disabled','true');

    //show the loading sign
    $('.loading').show();

    //start the ajax
    $.ajax({
        //this is the php file that processes the data and send mail
        url: "process.php", 

        //GET method is used
        type: "GET",

        //pass the data         
        data: data,     

        //Do not cache the page
        cache: false,

        //success
        success: function (html) {              
            //if process.php returned 1/true (send mail success)
            if (html==1) {                  
                //hide the form
                $('.form').fadeOut('slow');                 

                //show the success message
                $('.done').fadeIn('slow');

            //if process.php returned 0/false (send mail failed)
            } else alert('Sorry, unexpected error. Please try again later.');               
        }       
    });

    //cancel the submit button default behaviours
    return false;
    }); 
}); 
</script>

<body>


<div class="block">
<div class="done">
<b>Thank you !</b> We have received your message. 
</div>
<div class="form">
<form method="post" action="process.php">
<h4><u>Basic Contact Details</u></h4>
<div style="display: inline-block;" class="element">
    <label>Name</label><input type="text" name="name"/>
</div>
   <div style="display: inline-block;" class="element">
   <label>Last Name: </label><input type="text" name="l_name"/>
   </div>
   <div class="element">
    <label>Phone Number</label>
    <input type="text" name="phone"/>
    </div>
<div class="element">
    <label>Email</label>
    <input type="text" name="email"/>
</div>
<div style="display: inline-block;" class="element">
  <label>Postcode: </label><input type="text" name="postcode" size="10" maxlength="10">
</div>
<div style="display: inline-block;" class="element">
<label>House Number: </label><input type="text" name="house_number" size="3">
</div>
<div style="display: inline-block;" class="element">
  <label>Street Name: </label><input type="text" name="street">
</div>
<div style="display: inline-block;" class="element">
  <label>County:</label>
    <select>
      <option name="select">--SELECT--</option>
      <option name="bedford">Bedford</option>
      <option name="dunstable">Dunstable</option>
      <option name="luton">Luton</option>
    </select>
</div>

<h4><u>Job Details</u></h4>
<div class="element">
<label>You Would Like To Book A:</label>
<select name="job_est">
  <option name="select">--SELECT--</options>
  <option name="job">Job</option>
  <option name="est">Estimation</option>
</select>
</div>
<br/>
<div class="element">
<label>Service Your Booking:</label>
<select>
  <option name="select">--SELECT--</option>
  <option name="gardening">Gardening</option>
  <option name="landscaping">Landscaping</option>
  <option name="painting">Painting & Decorating</option>
  <option name="decking">Decking & Fencing</option>
</select>
</div>
<br/>
<div class="element">
    <label>Any Additional Information </label>
    <textarea name="comment" class="text textarea" /></textarea>
</div>
<div class="element">

    <input type="submit" id="submit"/>
    <div class="loading"></div>
</div>
</form>
</div>
</div>

<div class="clear"></div>

最佳答案

您应该将选择框的name属性更改为value

<select name="job_est">
  <option value="select">--SELECT--</options>
  <option value="job">Job</option>
  <option value="est">Estimation</option>
</select>

在你的 JavaScript 中,它应该是

if (job_est.val() == 'select') {
    job_est.addClass('hightlight');
    return false;
}

关于javascript - ajax 表单无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25245411/

相关文章:

php - 如何在不使用 Firebase 控制台的情况下发送 Firebase 云消息传递通知?

JavaScript/JQuery : Add Numbers from Fields accounting for Undefined (with 0)

javascript - 当物体滑动时阻止 jquery 函数

javascript - 使用多个 jQuery-minicolors 样本更改多个 div 容器的背景颜色

javascript - 从字符串序列中获取 n 对

php - Laravel 5 - 具有嵌套关系的 API 资源

jQuery UI Datepicker 无法在 Angular JS UI Bootstrap 模式中工作

ArrowDown 的 Javascript 事件监听器 - 停止页面滚动

javascript - jQuery every() 或 (this) 用于显示/隐藏切换

javascript - 变量未返回(未识别) - AngularJS