используя jquery для создания новой формы - PullRequest
0 голосов
/ 24 июля 2010

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

Вот то, что у меня работает,

<code>
function submitMainForm()
{
   $('#step1form, #step2form, #step3form').each(
    function(){ 
        $('#CompetitiveSave').append(getNamesAndValues($(this))); 
        });
    $('#CompetitiveSave').submit(); // submit the created form
}
, которое вызывает

function getNamesAndValues(jQObj)
{
    var divContainer = $(document.createElement('div'));
    var inputElement = $(document.createElement('input'));
    inputElement.attr('type', 'hidden');
    jQObj.each( function (){
        if (this.id){
            $(this).find('.FormLine').children().each(function(){
                    if (this.id && this.value){
                        inputElement.attr('name',this.name);
                        inputElement.attr('id',this.id);
                        inputElement.attr('value',this.value);
                        divContainer[0].appendChild(inputElement[0]);
                        inputElement = $(document.createElement('input'));
                        inputElement.attr('type','hidden');
                    }
                }
            );
        }<br>
    });
    return divContainer.html();
}

Он отлично работает, так как не включает в себя ВСЕ флажки, независимо от того, были они отмечены или нет.Любые указатели на то, что изменить, очень ценятся

Я пытался

function getNamesAndValues(jQObj)
{
    var divContainer = $(document.createElement('div'));
    var inputElement = $(document.createElement('input'));
    inputElement.attr('type', 'hidden');
    jQObj.each( function (){
        if(this.id)
        {
            $(this).find('.FormLine').children().each(function(){
                    if (this.id && this.value)//if it has an id and a value
                    {
                        if(this.type=='checkbox' && this.attr('checked') )//if it is a checkbox, it has to be checked to include
                        {
                          inputElement.attr('name',this.name);
                          inputElement.attr('id',this.id);
                          inputElement.attr('value',this.value);
                          divContainer[0].appendChild(inputElement[0]);
                          inputElement = $(document.createElement('input'));
                          inputElement.attr('type','hidden');<br>
                        }
                        else if(this.type!='checkbox')//otherwise if it isn't a check box, include it
                        {
                            inputElement.attr('name',this.name);
                            inputElement.attr('id',this.id);
                            inputElement.attr('value',this.value);
                            divContainer[0].appendChild(inputElement[0]);
                            inputElement = $(document.createElement('input'));
                            inputElement.attr('type','hidden');
                        }</p>

<pre><code>                }
            }
        );
    }        
});
return divContainer.html();

} Но это не сработало

1 Ответ

0 голосов
/ 24 июля 2010

Я думаю, вам нужно уделить больше внимания флажку, возможно, вам нужно добавить строку

inputElement.attr('checked',this.attr('checked'));

Спасибо

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