簡體   English   中英

結合jQuery序列化數組腳本和Submit按鈕

[英]Combining jQuery Serialize Array Script with Submit Button

我使用以下表格允許訪問者提交測試答案:

<form action="grade.php" method="post" id="quiz">
  <ol>
    <li style="display: none;">
      <?php echo join ($Base, ''); ?>
    </li>
  </ol>
  <input type="hidden" name="PreviousURL" value="<?php echo $MyURL; ?>" id="url" />
  <input type="hidden" name="user_token" value="<?php echo isset($_POST['user_token']) ? $_POST['user_token'] : '' ; ?>" />
  <input type="submit" value="Submit Quiz" />
</form>

如果用戶未回答所有問題,我想使用jQuery的序列化數組函數來防止表單提交。

但是我不明白如何將jQuery腳本與表單結合起來。 我假設我將#myform替換為表單的ID(“測驗”)。 但是,我是否只是將jQuery腳本發布在頁面底部?

我試過了,但是沒有用。 如果我只回答一個問題,然后單擊“提交”按鈕,該表單會將我轉發到結果頁面。

<script>
  $('#myform').submit(function(event){
  var answers = $('#myform').serializeArray();
  $.each(answers , function(index,value){
   if(value == ''){
   event.preventDefault();
   alert('you did not answer all the questions');
  });
</script>

嘗試編輯這些腳本

<script type="text/javascript">
    $("#quiz").submit(function(){
        var answers = $('#quiz').serializeArray();
        for(var i=0;i<answers.length;i++){
            if(answers[i].value == ''){
                alert('you did not answer all the questions');
                return false;
            }
        }
    });
</script>

如果允許使用HTML5,則始終可以在required字段中使用required屬性,以防止提交。

除此之外, serializeArray()返回的對象數組看起來像

{
    name: <input_name>,
    value: <input_value>
}

因此,在您的JavaScript中,不要檢查if(value == '') ,而是嘗試if(value.value == '')因為您當前正在根據字符串而不是實際值檢查對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM