2013-06-28 3 views
0

Я получаю эту ошибку 'jQuery SyntaxError: missing: after property id' во всех браузерах, и я не уверен, как исправить. Я запустил код через lint, и я получаю ту же ошибку. Нарушитель линия это в коде:jQuery SyntaxError нужна помощь для исправления

$('#BA_boxform input:submit').on('click', function() { 

Как я новичок в JQuery/JS, я был бы признателен, если кто-то может сказать мне, где я не так. Благодаря

код JQuery

// function to connect to php and process form values 

$(function(){ 
     $("#BA_boxform").validate({ 
     rules: { 
      name: { required: true }, 
      lname: { required: true } 
     }, 
     messages: { 
      name: { required: "* required" }, 
      lname: { required: "* required" } 
     }, 
     $('#BA_boxform input:submit').on('click', function() { 

     var formdata = $('#BA_boxform').serialize() + '&submit=' + $(this).val(); 

     //alert(formdata); 
     $.ajax({ 
      type: "POST", 
      url: "/sample/admin/requests/boxes/boxesadd.php", 
      data: formdata, 
      dataType: 'json', 
      success: function(msg){ 
       if(typeof msg.boxerrortext !== "undefined" && msg.boxerrortext == "You need to input a box") 
        { 
        $("#BA_addbox").html(msg.boxerrortext); 
        } 
       else 
        { 
        $("#BA_addbox").html("You have successfully added box " + msg.box + " to the archive."); 
        } 
       //$("#confirm_department").hide(); 

       /* 
       var $dialog = $('<div id="dialog"></div>') 
       .html('Your intake was successfully submitted and will be viewable in the reporting area.<br /><br />Thank you.'); 
       $dialog.dialog({ 
       autoOpen: true, 
       modal: true, 
       title: 'Box intake submission successfull', 
       width: 400, 
       height: 200, 
       draggable: false, 
       resizable: false, 
       buttons: { 
       Close: function() { 
       $(this).dialog("close"); 
       } 
       } 
       }); 
       */ 
       //alert(msg); 
       //console.log(msg); 
       //$("#BA_addbox").html(msg.box); 

       //$("#formImage .col_1 li").show(); 
       //$("#BA_boxform").get(0).reset(); 
       //$("#boxaddform").hide(); 
      } 
     }); 
     return false; 
    }); 
    }); 
}); 

// end php processing 
// End function to submit box intake form 

ответ

3

Я думаю, что ваш JQuery должен быть таким:

Слушатель $('#BA_boxform input:submit').on('click', function() должен быть независимым от validate способ. более

$(function() { 
    $("#BA_boxform").validate({ 
     rules: { 
      name: { 
       required: true 
      }, 
      lname: { 
       required: true 
      } 
     }, 
     messages: { 
      name: { 
       required: "* required" 
      }, 
      lname: { 
       required: "* required" 
      } 
     }, 
    }); 

    $('#BA_boxform input:submit').on('click', function() { 

     var formdata = $('#BA_boxform').serialize() + '&submit=' + $(this).val(); 

     //alert(formdata); 
     $.ajax({ 
      type: "POST", 
      url: "/sample/admin/requests/boxes/boxesadd.php", 
      data: formdata, 
      dataType: 'json', 
      success: function (msg) { 
       if (typeof msg.boxerrortext !== "undefined" && msg.boxerrortext == "You need to input a box") { 
        $("#BA_addbox").html(msg.boxerrortext); 
       } else { 
        $("#BA_addbox").html("You have successfully added box " + msg.box + " to the archive."); 
       } 
       //$("#confirm_department").hide(); 

       /* 
       var $dialog = $('<div id="dialog"></div>') 
       .html('Your intake was successfully submitted and will be viewable in the reporting area.<br /><br />Thank you.'); 
       $dialog.dialog({ 
       autoOpen: true, 
       modal: true, 
       title: 'Box intake submission successfull', 
       width: 400, 
       height: 200, 
       draggable: false, 
       resizable: false, 
       buttons: { 
       Close: function() { 
       $(this).dialog("close"); 
       } 
       } 
       }); 
       */ 
       //alert(msg); 
       //console.log(msg); 
       //$("#BA_addbox").html(msg.box); 

       //$("#formImage .col_1 li").show(); 
       //$("#BA_boxform").get(0).reset(); 
       //$("#boxaddform").hide(); 
      } 
     }); 
    }); 
}); 

Одна вещь .. Вам нужно сделать, потому что Validate на форме, и слушатель на кнопку отправки, которая не будет работать:

$('#BA_boxform').on('submit', function() 
+0

doh! Я печатаю слишком медленно! –

+0

@DanKaufman - я копирую/вставляю быстрее, чем я набираю :) – karthikr

+0

Я пробовал свой код, и он идет прямо на вызов ajax и даже не видит функцию проверки. спасибо – user1532468

2

На первый взгляд, ваш $("#BA_boxform").validate() не был закрыт

+0

nvm .. он закрыл его не в том месте –

0

Вы уверены, что правильно написал селектор

var $dialog = $('<div id="dialog"></div>') 

, потому что я думаю, что это должно быть только

var $dialog = $('#dialog') 

или если вы хотите создать новый элемент, вместо этого используйте append.

+1

jQuery будет обрабатывать его в любом случае. Это так умно. –

2

Проблема в том, что строка нарушения кода не имеет имени переменной. Эта функция передается после запятой в списке «параметров» или свойств. Если этот метод должен быть принят как EventHandler вам нужно будет сделать что-то вроде:

// функции для подключения к PHP и формы процесса значения

$(function(){ 
    $("#BA_boxform").validate({ 
    rules: { 
     name: { required: true }, 
     lname: { required: true } 
    }, 
    messages: { 
     name: { required: "* required" }, 
     lname: { required: "* required" } 
    }, 
    myEventHandler: $('#BA_boxform input:submit').on('click', function() { 
// rest of code snippet you had 

То есть, я не уверен, что это что вы пытаетесь сделать. Похоже, вы добавляете обработчик кликов в качестве части функций проверки. Учитывая, вы вызываете строку кода и не передавая обработчик метода, я предполагаю, что вы имели в виду что-то вроде:

$(function(){ 
    $("#BA_boxform").validate({ 
    rules: { 
     name: { required: true }, 
     lname: { required: true } 
    }, 
    messages: { 
     name: { required: "* required" }, 
     lname: { required: "* required" } 
    } 
    }); 
// Validate is ended 

// now add your event handler 
    $('#BA_boxform input:submit').on('click', function() { 

// rest of code snippet you had 

Выше ответил на первоначальный вопрос. Я попытаюсь ответить на вопрос обновления, поднятый в комментариях принятого ответа. Большинство моих предложений основаны на некоторых предположениях о том, что код html не показан.

ОК - для остановки обновления есть два простых варианта.
1. Измените кнопку отправки с <input type='submit'/> на <input type='button'/> 2. Верните false (как вы делаете) на обработчик кликов (ошибка в моем комментарии выше).

Возможные причины, по которым вы все еще освежаете после попытки # 2, - это ошибка обработки обработки javascript. Измените тип ввода в html на «button» вместо submit.Затем удалите submit в селекторе jquery и отправьте ссылку на кнопку по классу или идентификатору вместо $('#BA_boxform').find('.classOfYourButton').on('click', function() {. Это должно прекратить любую случайную публикацию, если вы не нажмете на ложную часть возврата.

Кроме этого, я не уверен, в чем проблема. Как говорили другие, после исправления закрытия метода проверки правильность кода (хотя она не делает то, что вы хотите). Было бы легче устранить неполадки, если бы вы разместили их в новом вопросе с другим соответствующим кодом.

+0

Спасибо, Дэн за вашу помощь – user1532468