2013-07-23 17 views
0

我試圖在頁面加載時在頁面上提交表單,如果在查詢字符串中設置了某些參數。表單使用ajax提交併且工作正常,並且查詢字符串中表單字段的預填充很好,但無論我嘗試自動提交表單,我最終都會導致無限循環的頁面加載。如果設置了GET參數,jQuery觸發器頁面加載提交

PHP

// top of page 
<?php 
    if (isset($_GET['postcode'])) { 
     $postcode = trim($_GET['postcode']); 
    } else { 
     $postcode = ''; 
    } 

    if (isset($_GET['phone_num'])) { 
     $phone_num = trim($_GET['phone_num']); 
    } else { 
     $phone_num = ''; 
    } 
?> 

jQuery的

/* 
// causing infinite page loads 
if ($('input[name="phone_num"]').val() != '' || $('input[name="postcode"]').val() != '') { 
    $('#check').trigger("click"); 
    return false; 
} 
*/ 

$('form').submit(function() { 
    $.get("script.php", $(this).serialize(), function(data){ 
     // process results 
    }, "json");  
    return false; 
}); 

HTML

<form class="navbar-form pull-right" action="" method="get"> 
    <input class="span2" type="text" name="phone_num" placeholder="Phone Number" value="<?php echo $phone_num; ?>"> 
    <input class="span2" type="text" name="postcode" placeholder="Postcode" value="<?php echo $postcode; ?>"> 
    <button type="submit" class="btn btn-primary" id="check">Check</button> 
</form> 

而不是使用一個的210函數的自動錶單提交我試過做同樣的$('form').submit,但我得到同樣的問題。我期待頁面正常工作,所以如果參數被設置,那麼ajax調用會自動進行,但顯然不是這種情況。

+0

你爲什麼觸發點擊事件提交表單?爲什麼不只是...提交表格?注意:這不會解決您的問題。 –

+0

@KevinB這只是我嘗試過的最新迭代,我已經使用'$('form')。submit'以及'$('#check')。trigger(「click」);'。 – martincarlin87

回答

1

在綁定提交事件之前,您正在退出代碼。刪除if語句中的return false,然後將if語句移至提交綁定之後。

$('form').submit(function() { 
    $.get("script.php", $(this).serialize(), function(data){ 
     // process results 
    }, "json");  
    return false; 
}); 

if ($('input[name="phone_num"]').val() != '' || $('input[name="postcode"]').val() != '') { 
    $('#check').trigger("click"); 
    //return false; 
} 
+0

啊,簡直不敢相信那麼容易...... – martincarlin87

1

HTML

<form class="navbar-form pull-right" action="" method="get"> 
    <input class="span2" type="text" name="phone_num" placeholder="Phone Number" value="<?php echo $phone_num; ?>"> 
    <input class="span2" type="text" name="postcode" placeholder="Postcode" value="<?php echo $postcode; ?>"> 
    <input type="button" class="btn btn-primary" id="check">Check</button> 
</form> 

的jQuery

$('#check').click(function(e) { 
    e.preventDefault(); 
    $.get("script.php", $('form').serialize(), function(data){ 
     // process results 
    }, "json");  
    return false; 
}); 
if ($('input[name="phone_num"]').val() != '' || $('input[name="postcode"]').val() != '') { 
    $('#check').trigger("click"); 
} 

當使用submit按鈕,則正在執行的默認事件(提交表格)以及處理所述處理程序的.click()事件。爲避免這種情況,請使用e.preventDefault();,從而僅處理事件的腳本部分。

+0

感謝@DevlshOne,這可能會工作,但我試圖避免重複ajax請求的東西,因爲它很長,這就是爲什麼我從我的帖子中省略它。 – martincarlin87

+0

當您的表單輸入條件滿足時,您仍然可以觸發'.click()'事件。 – DevlshOne

1

嘗試這樣:

if($('input[name="phone_num"]').val() && $('input[name="postcode"]').val()) { 
    $('form').submit(function() { 
     $.get("script.php", $(this).serialize(), function(data){ 
      // process results 
     }, "json");  
     return false; 
    }).submit(); 
} 
1

使用此行代碼。

$('form').trigger("submit"); 
相關問題