Пустая строка сериализации jQuery / JavaScript (не ошибка без имени или ошибка отключения) - PullRequest
0 голосов
/ 20 января 2012

Я прочитал много постов о jQuery serialize (), но не могу заставить его работать с моей формой!

Я работаю, когда распечатываю форму с использованием html + php, но не когда используюJavaScript, чтобы распечатать форму.Чего мне не хватает?

Я знаю, что есть куча постов по этому поводу, но каждый, что я нашел, касается того, что ppl забыл name = "" или отключил (Попробуйте мой код здесь: http://jsfiddle.net/ZBxkz/1/)

<!DOCTYPE html>

<head>
    <link rel="stylesheet" type="text/css" href="style.css">
    <title>MerBeer</title>

    <!-- //jquery -->
    <script type="text/javascript" src="../js/jquery-1.7.1.min.js"></script>
    <!-- //Ajaxscript: -->

    <script type="text/javascript">
        $(document).ready(function () {

         $("#knappen")    
        .delegate('button[name="minKnapp"]', "click", beer_insert);

        $("#theForm")    
        .delegate('button[name="beer_form_submit"]', "click", serial);

        function serial(){

            var f = $('#beer_form'); // CHANGE THIS VALUE TO CHANGE FORM!! #beer_form and #testForm
            var beerContainer = f.serialize();
            alert (beerContainer);

        }

        function beer_insert() {

                //hide first button
                $('#dold').hide();

               //Dynamically added form
                $('#theForm').html('Test :<br><form name="beer_form" id="beer_form"><table id="beers">');
                for (var i = 0; i < 1; i++){
                    $('#theForm').append('<tr><td><input type="text" name="beerCountry" id="beerNo_'+i+'_country" /></td></tr>');
                }
                $('#theForm').append('</table></form><br>');

                $('#theForm').append('<button name="beer_form_submit">Second button</button><br>')
        }
    });

    </script> 

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>

<body>
    <!-- Form that works-->
    <form id="testForm" name="testForm">
        <table>
            <?php
                for($i = 0; $i < 3; $i++){
                    echo('<tr><td><input type="text" name="test" id="inget'.$i.'"/></td></tr>');
                }
            ?>
            <tr><td><input type="text" name="test" id="ingetA"/></td></tr>
            <tr><td><input type="text" name="test" id="ingetB"/></td></tr>
        </table>
    </form>        

    <div id="theForm"></div>
    <div id="knappen"><button id="dold" name="minKnapp">The Button</button></div>

</body>

Ответы [ 2 ]

0 голосов
/ 20 января 2012

Вы не добавляете в вашу форму, скорее вы добавляете после . Поэтому, когда вы вызываете сериализацию, буквально ничего не сериализуется.

// this creates the form
$('#theForm').html('Test :<br><form name="beer_form" id="beer_form"><table id="beers">');

// but these don't append INTO it
for (var i = 0; i < 1; i++){
    $('#theForm')
        .append('<tr><td><input type="text" name="beerCountry" id="beerNo_'+i+'_country" /></td></tr>');
}

$('#theForm').append('<button name="beer_form_submit">Second button</button><br>')

Это почти то, что вы хотите, чтобы ваш рабочий процесс был:

// create my form
var my_dynamic_form = $('<form></form>');

// append to it
for (;;) {
    my_dynamic_form.append('<input/>');
}

// append your form to the DOM
$('#my_form').append(my_dynamic_form);
0 голосов
/ 20 января 2012

Надеюсь, я правильно понял ваш вопрос, но, возможно, вы этого хотите ?: http://jsfiddle.net/jyM5Z/

Не кладите свой HTML вместе со многими дополнениями. Вместо этого сначала создайте полную строку html, а затем добавьте ее в свой контейнер. Это не только сделает его намного быстрее, но и защитит вас от непредвиденного поведения, поскольку браузер анализирует ваш HTML-фрагмент и изменяет его, чтобы иметь смысл (например, автоматически закрывать открытые теги).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...