2013-05-28 2 views
1

У меня есть форма, и я хочу сохранить часть формы и некоторый html в моей базе данных.значения пустые при сохранении значений html формы в базе данных

<div class="contract"> 

    <label for="Company_PostCode">Postcode</label> 
    <input class="postcode valid" id="Company_PostCode" name="Company.PostCode" type="text" value=""> 

    <label for="Company_Address">Address</label> 
    <input class="address valid" id="Company_Address" name="Company.Address" type="text" value=""> 

    // more form elements here 

    <div class="text"> 
     some text here 
    </div> 
</div> 

Что я делаю

$("#submit-button").on("click", function(e) 
{ 
    e.preventDefault(); 
    $(".hidden-field").val($(".contract").html()); 

    if (/* some checks here */) 
    { 
     // blah blah 
    } 
    else 
    { 
     //submit form normally 

     $("#form-register").submit(); 
    } 
}); 

поэтому у меня есть скрытое поле, которое я использую, чтобы положить HTML, что я хочу, и отправить его на мой контроллер. Дело в том, что значения моей формы пустые. $ (".contract") .html() имеет все значения пустые. Любые идеи?

+0

Можете ли вы показать ваши действия контроллера, пожалуйста? –

+0

Это огромное, и я думаю, что это не имеет значения, потому что из javascript console $ (".contract") .html() показывает пустые входные значения. – celticharp

+0

Вы пытаетесь сохранить весь html, а не значения в полях 'input'? –

ответ

2

Ok, я думаю, я нашел ответ ...

$ ("почтовый индекс "). Атр (" значение", $ ("почтовый индекс") .val()); это должно быть сделано для каждого элемента формы внутри контракта div. поэтому полный ответ ...

$("#submit-button").on("click", function(e) 
{ 
    e.preventDefault(); 
    $('.contract input').each(
      function(){ 
       $(this).attr("value", $(this).val()); 
      }); 
    $(".hidden-field").val($(".contract").html()); 

    if (/* some checks here */) 
    { 
     // blah blah 
    } 
    else 
    { 
     //submit form normally 

    $("#form-register").submit(); 
    } 

});

+0

Теперь он работает? –

+1

да :) спасибо всем за ваши ответы – celticharp

+0

@necronio только что я нашел это ... – sachin

1

Нельзя использовать скрытое поле. Вы можете использовать скрытый DIV:

<div id="myDiv" style="display: none;"></div> 

, а затем установить его HTML:

$("#myDiv").val($(".contract").html()); 

Кроме того, если у вас есть более одного элемента с class="contract" в вашем DOM вы могли бы рассмотреть возможность использования более жесткого выбора, чтобы точно определить фактический элемент.

+0

Скрытое поле - не моя проблема. Скрытое поле используется для того, чтобы отправить результат на мой контроллер, и это работает правильно. Моя проблема в том, что сам html имеет пустые значения. см.: celticharp

+0

также у меня есть только один контракт div. – celticharp

2

Я попробовал ваш код в fiddle.it работает fine.I'm также получает значение от

$(".contract").html(); 

также может установить значение скрытого элемента.

Пожалуйста Проверьте это в скрипку http://jsfiddle.net/E6DCS/1/

+0

@necronio все еще, если u face pbm означает, что дайте мне знать – sachin

+0

Прошу прощения, возможно, я не могу выразить себя очень хорошо. Если я ввожу что-то в поля ввода, эти значения не отображаются в html, отображаемом в окне предупреждения. – celticharp

+0

@necronio Я понимаю, в чем проблема, предупреждение «видит» html, поскольку оно было первоначально отображено, и не учитывает значение, которое вы разместили внутри полей ввода. –

1
$("#submit-button").on("click", function(e) 
{ 
    e.preventDefault(); 
    $('.address').attr('value',$('.address').val()); 
    $('.postcode').attr('value',$('.postcode').val()); 
    alert($(".contract").html()); 
    $(".hidden-field").val($(".contract").html()); 
    $("#form-register").submit(); 
}); 

Fiddle http://jsfiddle.net/E6DCS/2/

Смежные вопросы